2011-02-25 14 views
9

estoy usando el siguiente script NSIS:¿Cómo puedo obtener NSIS para instalar y ejecutar archivos desde un directorio temporal?

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 

La intención es que el instalador marcará el final de esos dos archivos, y Installer.msi setup.exe (que es un programa previo para instalar los prerrequisitos y luego llamar instalador .msi) en el archivo MyApp Setup.exe. Cuando se ejecuta MyAppSetup.exe, debe extraer installer.msi y setup.exe en el directorio $ Temp \ MyApp \ Install, y debe ejecutar setup.exe desde ese directorio.

Sin embargo, cuando ejecuto MyAppSetup desde el escritorio, ejecuta un archivo setup.exe que encuentra en el escritorio, y ni siquiera veo un directorio MyApp \ Install en C: \ Temp.

¿Qué debo hacer para que este script instale los archivos en la ubicación correcta y ejecute el archivo correcto?

Respuesta

2

No sé si se podría resolver su problema, pero me gustaría escribir:

Exec $TEMP\MyApp\Instal\setup.exe 

¿Estas seguro que $ TEMP apunta a C:/temp? ¿Lo revisaste?

+0

Ah, tienes razón. Está apuntando a algo en AppData. Veo los archivos allí, ahora. Estaba poniendo los archivos en la ubicación correcta. Creo que el camino completo fue la solución, también. Es algo que había intentado antes, pero creo que por alguna razón no recibía la última versión del instalador. –

12
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 
+0

¿Cuál es el beneficio de $ pluginsdir sobre $ temp? y ¿qué es $ pluginsdir? – nawfal

+0

@nawfal $ pluginsdir está dentro de $ temp y se borró automáticamente para usted ... – Anders

+0

gracias, lo desenterré con un poco de lectura ... – nawfal

0

Esta es otra manera de hacerlo

Function .onInit 

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

FunctionEnd 

Section "Exec file" SecFile 

    nsExec::Exec $PLUGINSDIR\test.exe 

SectionEnd 
Cuestiones relacionadas