Pregunta

Me estoy preparando para desarrollar mi primer instalador de Windows para un juego que estoy desarrollando. He escuchado recomendado NSIS, pero mis necesidades son básicas y no puedo averiguar qué es exactamente lo que se requiere.

Me gustaría un script NSIS corto que puede instalar un directorio de archivos en el directorio "Archivos de programa" (solicitando permiso si es necesario), cree un acceso directo simple en el menú Inicio y registre un desinstalador en el Agregar / Eliminar Programas Panel de control.

El desinstalador simplemente eliminaría el directorio y eliminaría el acceso directo, lo que solicitará reiniciar si los archivos están en uso.

Finalmente, me gustaría apoyar las actualizaciones al desinstalar todos los archivos antiguos e instalar nuevos, lo que solicita al usuario que se reinicie si los archivos antiguos están en uso.

He visto algunos scripts de NSH de muestra en línea que hacen bits y piezas de esto; Estoy tratando de encubrirlo a mí mismo y está pareciendo que va a ser cientos de líneas. Mi código huele a lo incorrecto.

¿Es el programa que estoy describiendo realmente se supone que es cientos de líneas de NSH? Seguramente hay una manera más fácil?

¿Fue útil?

Solución

Descargar Eclipse y luego instalar eclipsensis plugin en Eclipse.Que no solo le brinda un editor completo para los archivos NSIS (con la finalización del código y todo lo similar), pero también tiene un asistente para crear el script para usted respondiendo solo algunas preguntas (título de la aplicación, iconoPara ser utilizado, ...).

Otros consejos

Esto debería estar bastante cerca (no probé este script), debe completar los espacios en blanco y reemplazar ciertas cadenas ...

!define Name "Foo"
Name "${Name}"
Outfile "${Name} setup.exe"
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
InstallDir "$ProgramFiles\${Name}"

!include LogicLib.nsh
!include MUI.nsh

Function .onInit
SetShellVarContext all
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
    MessageBox mb_iconstop "Administrator rights required!"
    SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
    Quit
${EndIf}
FunctionEnd

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"


Section
SetOutPath "$INSTDIR"
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Foo By Bar Inc."   "DisplayName" "${Name}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Foo By Bar Inc."   "UninstallString" "$INSTDIR\Uninstall.exe"
;TODO: Install your files with the File command
CreateShortCut "$SMPROGRAMS\${Name}.lnk" "$INSTDIR\Foo.exe"
SectionEnd

Section "Uninstall"
;TODO: Delete your files
Delete "$SMPROGRAMS\${Name}.lnk"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Foo By Bar Inc."
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
SectionEnd

Un gran asistente para NSIS es la edición de HM NIS, que puede guiarlo a través de su primer instalador, incluido lo que menciona anteriormente, creo.

http://hmne.sourceforge.net/

Si desea proporcionar un actualizador en NSIS, recomendaría algunas cosas:

  1. Cree una forma de que su solicitud verifique las actualizaciones de su servidor, generalmente se realiza cuando se carga primero
  2. Descargue el nuevo instalador y ejecutelo (a partir de su solicitud, aunque cualquiera pueda obtenerlo de su sitio web también).
  3. Si su programa antiguo se está ejecutando, debe apagarlo. NSIS tiene complementos que pueden encontrar un proceso y matarlo. Esto no es super "agradable", pero puede ser necesario.
  4. Recomiendo este complemento de proceso

    Si tiene DLL en uso, no puede eliminarlos. Sin embargo, en NSIS puede cambiarlos, y luego marcarlos para eliminarlos en el próximo reinicio, así:

    Delete /REBOOTOK file.txt
    

    Luego copia tus nuevos DLL en la carpeta.

    Para NSIS, hay un montón de complementos, muestras y gran ayuda, pero aprender el idioma tarda un poco de tiempo. Inno es mucho más fácil de aprender, pero más difícil de personalizar cuando llegas a la nitty Gritty. Sin embargo, diría que los dos son comparables en general, y deberían trabajar bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top