Skip to content

Commit bdd9374

Browse files
committed
fix: escape only NSIS system variables, keep script variables
- Escape $INSTDIR, $LOCALAPPDATA, $0 etc. (NSIS runtime variables) - Keep , unchanged (script-defined constants) - Fix CreateDirectory and PATH manipulation in installers
1 parent e313dcf commit bdd9374

1 file changed

Lines changed: 43 additions & 41 deletions

File tree

.github/workflows/ci.yml

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ jobs:
152152
echo "Building USER installer for version: $VERSION (Major: $MAJOR, Minor: $MINOR, Build: $BUILD)"
153153
154154
cat > installer_user.nsi << EOF
155+
155156
; Slashsum Installer - Version minimale sans macros
156157
; Installation dans le profil utilisateur avec PATH utilisateur
157158
@@ -168,7 +169,7 @@ jobs:
168169
OutFile "slashsum-setup-user.exe"
169170
170171
; Installation dans le profil utilisateur (pas besoin d'admin)
171-
InstallDir "$LOCALAPPDATA\${COMPANYNAME}\${APPNAME}"
172+
InstallDir "\$LOCALAPPDATA\${COMPANYNAME}\${APPNAME}"
172173
173174
; Pas besoin de droits admin
174175
RequestExecutionLevel user
@@ -189,24 +190,24 @@ jobs:
189190
; Section d'installation principal
190191
Section "install"
191192
; Créer le répertoire d'installation
192-
CreateDirectory "$INSTDIR"
193+
CreateDirectory "\$INSTDIR"
193194
194195
; Copier les fichiers
195-
SetOutPath "$INSTDIR"
196+
SetOutPath "\$INSTDIR"
196197
File "slashsum-windows-amd64.exe"
197198
File /oname=slashsum.exe "slashsum-windows-amd64.exe"
198199
199200
; Ajouter au PATH utilisateur - méthode simple
200201
DetailPrint "Configuring user PATH..."
201-
ReadRegStr $0 HKCU "Environment" "PATH"
202+
ReadRegStr \$0 HKCU "Environment" "PATH"
202203
203204
; Si PATH est vide, ajouter juste notre chemin
204-
StrCmp $0 "" 0 +3
205-
WriteRegStr HKCU "Environment" "PATH" "$INSTDIR"
205+
StrCmp \$0 "" 0 +3
206+
WriteRegStr HKCU "Environment" "PATH" "\$INSTDIR"
206207
Goto PathDone
207208
208209
; Sinon, ajouter à la fin avec un point-virgule
209-
WriteRegStr HKCU "Environment" "PATH" "$0;$INSTDIR"
210+
WriteRegStr HKCU "Environment" "PATH" "\$0;\$INSTDIR"
210211
211212
PathDone:
212213
; Notifier Windows du changement
@@ -215,58 +216,58 @@ jobs:
215216
216217
; Créer l'entrée de désinstallation dans le registre utilisateur
217218
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
218-
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
219+
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "\$INSTDIR\uninstall.exe"
219220
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${COMPANYNAME}"
220221
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}"
221-
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "$INSTDIR"
222-
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\slashsum.exe"
222+
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "\$INSTDIR"
223+
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "\$INSTDIR\slashsum.exe"
223224
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1
224225
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1
225226
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" 3072
226227
227228
; Créer le désinstallateur
228-
WriteUninstaller "$INSTDIR\uninstall.exe"
229+
WriteUninstaller "\$INSTDIR\uninstall.exe"
229230
230231
; Créer un raccourci sur le bureau (optionnel)
231232
;MessageBox MB_YESNO "Créer un raccourci sur le bureau ?" IDNO +2
232-
;CreateShortcut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\slashsum.exe"
233+
;CreateShortcut "\$DESKTOP\${APPNAME}.lnk" "\$INSTDIR\slashsum.exe"
233234
234235
; Créer des raccourcis dans le menu démarrer
235236
;c'est une application console donc pas besoin de ces raccourcis
236-
;CreateDirectory "$SMPROGRAMS\${APPNAME}"
237-
;CreateShortcut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\slashsum.exe"
238-
;CreateShortcut "$SMPROGRAMS\${APPNAME}\Désinstaller ${APPNAME}.lnk" "$INSTDIR\uninstall.exe"
237+
;CreateDirectory "\$SMPROGRAMS\${APPNAME}"
238+
;CreateShortcut "\$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "\$INSTDIR\slashsum.exe"
239+
;CreateShortcut "\$SMPROGRAMS\${APPNAME}\Désinstaller ${APPNAME}.lnk" "\$INSTDIR\uninstall.exe"
239240
240241
DetailPrint "Installation complete!"
241242
242243
; Message de fin
243244
MessageBox MB_YESNO|MB_ICONQUESTION "Installation complete! $\n$\nOpen a terminal to test 'slashsum'?$\n$\nNote: Restart your terminal if necessary." IDNO +2
244-
ExecShell "open" "cmd" "/k set PATH=%PATH%;$INSTDIR && echo Slashsum installed ! && slashsum --help"
245+
ExecShell "open" "cmd" "/k set PATH=%PATH%;\$INSTDIR && echo Slashsum installed ! && slashsum --help"
245246
SectionEnd
246247
247248
; Section de désinstallation
248249
Section "uninstall"
249250
; Supprimer du PATH utilisateur - méthode simple
250251
DetailPrint "Cleaning up the user PATH..."
251-
ReadRegStr $0 HKCU "Environment" "PATH"
252+
ReadRegStr \$0 HKCU "Environment" "PATH"
252253
253254
; Remplacer les occurrences de notre chemin
254255
; Note: Cette méthode simple peut laisser des point-virgules orphelins
255256
; mais c'est acceptable pour un installateur basique
256257
257258
; Supprimer les fichiers
258-
Delete "$INSTDIR\slashsum.exe"
259-
Delete "$INSTDIR\slashsum-windows-amd64.exe"
260-
Delete "$INSTDIR\uninstall.exe"
259+
Delete "\$INSTDIR\slashsum.exe"
260+
Delete "\$INSTDIR\slashsum-windows-amd64.exe"
261+
Delete "\$INSTDIR\uninstall.exe"
261262
262263
; Supprimer les raccourcis
263-
;Delete "$DESKTOP\${APPNAME}.lnk"
264-
;Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
265-
;Delete "$SMPROGRAMS\${APPNAME}\Désinstaller ${APPNAME}.lnk"
266-
RMDir "$SMPROGRAMS\${APPNAME}"
264+
;Delete "\$DESKTOP\${APPNAME}.lnk"
265+
;Delete "\$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
266+
;Delete "\$SMPROGRAMS\${APPNAME}\Désinstaller ${APPNAME}.lnk"
267+
RMDir "\$SMPROGRAMS\${APPNAME}"
267268
268269
; Supprimer le répertoire d'installation
269-
RMDir "$INSTDIR"
270+
RMDir "\$INSTDIR"
270271
271272
; Supprimer l'entrée de désinstallation
272273
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
@@ -291,6 +292,7 @@ jobs:
291292
echo "Building ADMIN installer for version: $VERSION (Major: $MAJOR, Minor: $MINOR, Build: $BUILD)"
292293
293294
cat > installer_admin.nsi << EOF
295+
294296
; Slashsum Installer - Version Admin ultra-simple
295297
; Installation système avec droits administrateur
296298
@@ -310,7 +312,7 @@ jobs:
310312
OutFile "slashsum-setup-admin.exe"
311313
312314
; Installation dans Program Files (nécessite admin)
313-
InstallDir "$PROGRAMFILES64\${COMPANYNAME}\${APPNAME}"
315+
InstallDir "\$PROGRAMFILES64\${COMPANYNAME}\${APPNAME}"
314316
315317
; Droits admin requis
316318
RequestExecutionLevel admin
@@ -331,22 +333,22 @@ jobs:
331333
; Section d'installation principal
332334
Section "install"
333335
; Créer le répertoire d'installation
334-
CreateDirectory "$INSTDIR"
336+
CreateDirectory "\$INSTDIR"
335337
336338
; Copier les fichiers
337-
SetOutPath "$INSTDIR"
339+
SetOutPath "\$INSTDIR"
338340
File "slashsum-windows-amd64.exe"
339341
File /oname=slashsum.exe "slashsum-windows-amd64.exe"
340342
341343
; Ajouter au PATH système - méthode brutale mais qui marche
342344
DetailPrint "Configuring system PATH..."
343-
ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
345+
ReadRegStr \$0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
344346
345347
; Ajouter notre chemin (même s'il existe déjà, pas grave)
346-
StrCmp $0 "" 0 +3
347-
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" "$INSTDIR"
348+
StrCmp \$0 "" 0 +3
349+
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" "\$INSTDIR"
348350
Goto PathDone
349-
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" "$0;$INSTDIR"
351+
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" "\$0;\$INSTDIR"
350352
351353
PathDone:
352354
; Notifier Windows du changement
@@ -355,23 +357,23 @@ jobs:
355357
356358
; Créer l'entrée de désinstallation
357359
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
358-
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
360+
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "\$INSTDIR\uninstall.exe"
359361
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${COMPANYNAME}"
360362
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}"
361-
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "$INSTDIR"
362-
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\slashsum.exe"
363+
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "\$INSTDIR"
364+
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "\$INSTDIR\slashsum.exe"
363365
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1
364366
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1
365367
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" 3072
366368
367369
; Créer le désinstallateur
368-
WriteUninstaller "$INSTDIR\uninstall.exe"
370+
WriteUninstaller "\$INSTDIR\uninstall.exe"
369371
370372
DetailPrint "Installation complete!"
371373
372374
; Message de fin
373375
MessageBox MB_YESNO|MB_ICONQUESTION "Installation terminée !$\n$\nOpen a terminal to test 'slashsum'?$\n$\nNote: Restart your terminal if necessary." IDNO +2
374-
ExecShell "open" "cmd" "/k set PATH=%PATH%;$INSTDIR && echo Slashsum CLI installed ! && slashsum --help"
376+
ExecShell "open" "cmd" "/k set PATH=%PATH%;\$INSTDIR && echo Slashsum CLI installed ! && slashsum --help"
375377
SectionEnd
376378
377379
; Section de désinstallation
@@ -381,12 +383,12 @@ jobs:
381383
DetailPrint "Cleaning up files..."
382384
383385
; Supprimer les fichiers
384-
Delete "$INSTDIR\slashsum.exe"
385-
Delete "$INSTDIR\slashsum-windows-amd64.exe"
386-
Delete "$INSTDIR\uninstall.exe"
386+
Delete "\$INSTDIR\slashsum.exe"
387+
Delete "\$INSTDIR\slashsum-windows-amd64.exe"
388+
Delete "\$INSTDIR\uninstall.exe"
387389
388390
; Supprimer le répertoire d'installation
389-
RMDir "$INSTDIR"
391+
RMDir "\$INSTDIR"
390392
391393
; Supprimer l'entrée de désinstallation
392394
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"

0 commit comments

Comments
 (0)