ExecWait "msiexec /i myinstaller.msi /qn" $0
Это все, что я называю в моем сценарии. (/qn
предназначен для установки без вывода сообщений без появления окна прогресса, я также тестировал без него).
Ошибка с кодом ошибки msiexec из 1619- This installation package could not be
opened. Verify that the package exists and
that you can access it, or contact the
application vendor to verify that this is
a valid Windows Installer package.
Тот же самый вызов msiexec прекрасно работает в командной строке, или если я пишу базовый сценарий NSIS, который больше ничего не делает - это означает, что он не из-за NTFS-разрешений , что поиск Google подбрасывает.
Следовательно, это должно быть что-то еще в моем основном скрипте установщика.
После комментирования почти всего в моем сценарии, чтобы изолировать причину:
SetOutPath "$INSTDIR\Some directory"
Если я закомментирую этот раздел и не установлю выходной путь, все работает нормально. Что на земле происходит? Почему это должно мешать вызову msiexec?
Обновление - Вот версия проблемы tl;dr
- следующий фрагмент не работает при запуске в качестве независимого сценария, если я не закомментирую вызов SetOutPath
. ЗАЧЕМ?
Не имеет значения, есть ли в выходном каталоге какие-либо файлы (нет) или я вызываю его непосредственно перед или несколькими строками раньше.
showinstdetails show
OutFile test.exe
section
setoutpath "D:\back"
ExecWait "msiexec /i MyInstaller.msi /qr" $0
MessageBox MB_OK $0
sectionend