Как я могу получить NSIS для установки и запуска файлов из временного каталога? - PullRequest
9 голосов
/ 25 февраля 2011

Я использую следующий скрипт NSIS:

Name "My app wrapper"
Outfile "MyAppSetup.exe"
InstallDir $TEMP\MyApp\Install
Function .onInit
SetSilent silent
FunctionEnd
Section ""
    SetOutPath $TEMP\MyApp\Install
    File installer.msi
    File setup.exe
    Exec setup.exe
SectionEnd

Предполагается, что установщик обернет эти два файла, installer.msi и setup.exe (который является загрузчиком для установки prereqs, а затем вызовет installer.msi) в файл MyApp Setup.exe. Когда MyAppSetup.exe запущен, он должен распаковать installer.msi и setup.exe в каталог $ Temp \ MyApp \ Install, а также запустить setup.exe из этого каталога.

Однако, когда я запускаю MyAppSetup с рабочего стола, он запускает файл setup.exe, который находит на рабочем столе, и я даже не вижу каталог MyApp \ Install в C: \ Temp.

Что мне нужно сделать, чтобы этот скрипт установил файлы в нужное место и выполнил нужный файл?

Ответы [ 3 ]

12 голосов
/ 25 февраля 2011
Section
InitPluginsDir
SetOutPath "$pluginsdir\MyApp\Install" ;It is better to put stuff in $pluginsdir, $temp is shared

File installer.msi
File setup.exe

ExecWait '"$pluginsdir\MyApp\Install\setup.exe"' ;You should always use full paths and proper quotes

SetOutPath $exedir ;Change current dir so $temp and $pluginsdir is not locked by our open handle
SectionEnd
2 голосов
/ 25 февраля 2011

Я не знаю, решит ли это вашу проблему, но я бы написал:

Exec $TEMP\MyApp\Instal\setup.exe

Вы уверены, что $ TEMP указывает на C: / Temp?Вы это проверяли?

0 голосов
/ 03 ноября 2012

Это еще один способ сделать это

Function .onInit

    InitPluginsDir
        File /oname=$PLUGINSDIR\test.exe "test.exe"

FunctionEnd

Section "Exec file" SecFile

    nsExec::Exec $PLUGINSDIR\test.exe

SectionEnd
...