Question

Je me prépare à développer mon tout premier installateur Windows pour un jeu que je développe. J'ai entendu NSIS recommandé, mais mes besoins sont basiques et je ne peux pas comprendre ce qui est requis exactement.

J'aimerais un script SNS courte pouvant installer un répertoire de fichiers dans le répertoire "Fichiers de programme" (demandeur de permission si nécessaire), créez un raccourci simple dans le menu Démarrer et enregistrez un désinstallateur dans l'Ajout / Supprimer Panneau de contrôle des programmes.

Le désinstallateur supprimerait simplement le répertoire et supprimerais le raccourci, invitant à redémarrer si les fichiers sont utilisés.

Enfin, j'aimerais prendre en charge les mises à niveau en désinstallant tous les anciens fichiers et en installant de nouveaux, invitant l'utilisateur à redémarrer si les anciens fichiers sont utilisés.

J'ai vu des échantillons de scripts NSH en ligne qui font des morceaux de ceci; J'essaie de tendre ladser ensemble moi-même et on dirait que ça va être des centaines de lignes longues. Mon code sent la mauvaise chose.

Le programme que je décris est vraiment censé être des centaines de lignes de NSH? Il y a sûrement un moyen plus facile?

Était-ce utile?

La solution

Télécharger Eclipse et ensuite installer le Plugin Eclipsensis dans Eclipse.Cela vous donne non seulement un éditeur complet pour les fichiers NSIS (avec l'achèvement du code et tout ce que similaire), mais a également un assistant pour créer le script pour vous en répondant à quelques questions (titre d'application, icôneêtre utilisé, ...).

Autres conseils

Ceci devrait être assez proche (je n'ai pas testé ce script), vous devez remplir les blancs et remplacer certaines cordes ...

!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 excellent assistant pour la SNS est le HM NIS Modifier, qui peut vous guider via votre premier installateur, y compris ce que vous avez mentionné ci-dessus, je crois.

http://hmne.sourceforge.net/

Si vous souhaitez fournir un programme de mise à jour dans la SNS, je recommanderais quelques éléments:

  1. Créez un moyen pour votre application de rechercher des mises à jour de votre serveur, généralement effectuées lors de la première charge
  2. Téléchargez le nouveau programme d'installation et exécutez-le (à partir de votre application, bien que quiconque puisse probablement l'obtenir sur votre site Web également).
  3. Si votre ancien programme est en cours d'exécution, vous devez le fermer. SNS a des plugins qui peuvent trouver un processus et la tuer. Ce n'est pas super "gentil" mais peut être nécessaire.
  4. Je recommande ce plugin de processus

    Si vous avez l'utilisation de DLL, vous ne pouvez pas les supprimer. Cependant, dans la SNS, vous pouvez les renommer, puis les marquer pour la suppression du prochain redémarrage, comme:

    Delete /REBOOTOK file.txt
    

    puis copiez votre nouvelle DLL dans le dossier.

    Pour SNS, il y a une tonne de plugins, des échantillons et une aide précieuse, mais apprendre la langue prend un peu de temps. Inno est beaucoup plus facile à apprendre, mais plus difficile à personnaliser lorsque vous arrivez au Nitty Gritty. Cependant, je dirais que les deux sont globalement comparables et devraient soit fonctionner très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top