NSIS ExecWait возвращает 6 при попытке выполнить exe - PullRequest
0 голосов
/ 22 февраля 2011

Привет, у меня раздражающая проблема с NSIS.

Я пытаюсь написать скрипт для установки плагина SaveAsPdfAndXps.exe / надстройки для Office 2007.

Вот мой скрипт:

Section "SaveAsPdf"
     DetailPrint "Installing SaveAsPdfAndXps Extension"
     File 'Prereq\SaveAsPDFandXPS.exe'
     ExecWait '$TEMP\SaveAsPDFandXPS.exe' $0
     DetailPrint "SaveAsPDFandXPS exit code = $0"
;     Delete '$TEMP\SaveAsPDFandXPS.exe'
SectionEnd

Итак, я использую Windows 7 x64, у меня уже есть Office 07 с установленным расширением.Тем не менее, если я запускаю exe самостоятельно, щелкнув по нему и установив вручную , он не прерывает его, просто устанавливает красиво.

Теперь вышеприведенный скрипт выводит exit код 6 !?А если я прокомментирую бит «Удалить», я не увижу файл в моем временном каталоге?Как мне узнать, что происходит?

Расширение SaveAsPDFandXPS выводит файл журнала во временную директорию.если выполняется вручную, но это не происходит со сценарием.

Когда выполняется скомпилированная установка, она запрашивает повышение прав между прочим.

С уважением,

1 Ответ

2 голосов
/ 22 февраля 2011

Код, который вы опубликовали, является неполным, инструкция File извлекает файлы в $ outdir, если вы не используете ключ / oname, $ outdir устанавливается с помощью InstallDir или SetOutPath и не появляется в вашем коде, поэтому невозможно определить, где вы находитесьизвлечение в ...

Попробуйте изменить его на:

Section "SaveAsPdf"
     DetailPrint "Installing SaveAsPdfAndXps Extension"
     InitPluginsDir
     File '/oname=$PluginsDir\SaveAsPDFandXPS.exe' 'Prereq\SaveAsPDFandXPS.exe'
     ExecWait '"$PluginsDir\SaveAsPDFandXPS.exe"' $0 ;Note the quotes here, if we needed to pass parameters it would be '"c:\path\app.exe" /param'
     DetailPrint "SaveAsPDFandXPS exit code = $0"
     Delete "$PluginsDir\SaveAsPDFandXPS.exe"
SectionEnd

$ PluginsDir никогда не будет конфликтовать с другими приложениями, $ Temp используется совместно с другими приложениями, поэтому обычно лучше поместить вещив $ PluginsDir.

Чтобы запустить без повышения прав, добавьте RequestExecutionLevel User

...