Получение значения result.message из установщика javascript

У меня есть установщик (файл.pkg) и использую дистрибутив XML. В проверке установки у меня есть функция javascript для проверки версии ОС, среди прочего. Если ОС находится за пределами допустимого диапазона, в свойстве result.message устанавливается сообщение об ошибке, в котором говорится что-то вроде:

Минимальная требуемая ОС составляет 10,8".

function  min_system_version ()
{
    /* Must be >= 10.8 */
    return (system.compareVersions(system.version.ProductVersion, '10.8') >= 0);
}

function InstallationCheck()
{       
    if (min_system_version() == false)
    {
        my.result.title = system.localizedString('ALERT');
        my.result.message = system.localizedString('FAILED_DESCRIPTION');
        my.result.type = 'Fatal';
        return false;
    }
    :
    :
}

Это работает нормально, если я запускаю установщик напрямую. Но когда я запускаю установщик из демона, используя NSTask для запуска /usr/sbin/installer, "terminationStatus" возвращает 1 независимо от того, какая это была ошибка. В результате в системном журнале отображается только "Установка завершена со статусом 1". Примечание: поскольку проверка выполняется в предустановленном полете, в install.log пока ничего не отображается.

:
:
NSArray *args = [NSArray arrayWithObjects:@"-pkg", packagePath, @"-target", @"/", nil];
NSTask *installerTask = [NSTask launchedTaskWithLaunchPath:@"/usr/sbin/installer" arguments:args];
BOOL installed = NO;

[installerTask waitUntilExit];

NSTaskTerminationReason reason = [installerTask terminationReason];

if (NSTaskTerminationReasonUncaughtSignal == reason)
{
    // Install exited because of an uncaught signal.
    syslog(LOG_ERR, "Install exited because of an uncaught signal.");
}
else
{
    int status = [installerTask terminationStatus];
    syslog(LOG_ERR, "Install exited with status %ld.", (long)status);

    installed = (status == 0);
}
:
:

Было бы хорошо, если бы я мог записать ошибку из функции javascript, но возможно ли это? И есть ли способ получить сообщение об ошибке, возвращаемое из JavaScript в NSTask? Я хотел бы показать фактическую ошибку в system.log, чтобы наши пользователи могли ее обнаружить.

0 ответов

Другие вопросы по тегам