Skip to content

Commit 646e678

Browse files
committed
Fix the troublesome Portable Mode installer option
1 parent d37a021 commit 646e678

2 files changed

Lines changed: 75 additions & 25 deletions

File tree

‎install/win/English.nsh‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,26 @@ ${LangFileString} SETUP_XCOM_FOLDER "${GAME_NAME} ${GAME_VERSION} requires a cop
1111
${LangFileString} SETUP_UFO_FOLDER "UFO: Enemy Unknown / X-COM: UFO Defense"
1212
${LangFileString} SETUP_TFTD_FOLDER "X-COM: Terror From The Deep"
1313

14+
${LangFileString} SETUP_EXTRA_OPTIONS_TITLE "Choose Options"
15+
${LangFileString} SETUP_EXTRA_OPTIONS_SUBTITLE "Choose which additional options of $(^NameDA) you want to install."
16+
${LangFileString} SETUP_PORTABLE "Portable Installation"
17+
${LangFileString} SETUP_PORTABLE_DESC "${GAME_NAME} will store user data in the installation folder. The folder must be user-writable."
18+
1419
;--------------------------------
1520
;Installer Sections
1621

1722
${LangFileString} SETUP_GAME "Game Files"
1823
${LangFileString} SETUP_GAME_DESC "Files required to run ${GAME_NAME}."
1924
${LangFileString} SETUP_PATCH "Data Patch"
2025
${LangFileString} SETUP_PATCH_DESC "Fixes errors in the original X-COM data. Recommended for first installations. (requires an internet connection)"
21-
${LangFileString} SETUP_PORTABLE "Portable Installation"
22-
${LangFileString} SETUP_PORTABLE_DESC "Puts all ${GAME_NAME} files in the same folder, making a portable installation."
2326
${LangFileString} SETUP_DESKTOP "Desktop Shortcut"
2427
${LangFileString} SETUP_DESKTOP_DESC "Creates a shortcut in the desktop to play ${GAME_NAME}."
2528

2629
;--------------------------------
2730
;Uninstaller Descriptions
2831

2932
${LangFileString} SETUP_UNDATA "Delete X-COM Data"
30-
${LangFileString} SETUP_UNDATA_DESC "Deletes all ${GAME_NAME} data, including X-COM resources. Recommended for a clean reinstall."
33+
${LangFileString} SETUP_UNDATA_DESC "Deletes all ${GAME_NAME} install data, including X-COM resources. Recommended for a clean reinstall."
3134
${LangFileString} SETUP_UNUSER "Delete User Data"
3235
${LangFileString} SETUP_UNUSER_DESC "Deletes all ${GAME_NAME} user data, including mods, savegames, screenshots and options. Only use this for a complete wipe."
3336

‎install/win/installer.nsi‎

Lines changed: 69 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,14 @@
5959
Var XDirTFTD
6060
Var XBrowseTFTD
6161

62+
Var ZDialog
63+
Var ZLabelPortable
64+
Var ZCheckPortable
65+
6266
Var StartMenuFolder
6367
Var UFO_DIR
6468
Var TFTD_DIR
69+
Var PortableMode
6570

6671
;--------------------------------
6772
;Interface Settings
@@ -87,6 +92,8 @@
8792

8893
Page custom XcomFolder ValidateXcom
8994

95+
Page custom ExtraOptions ExtraOptionsSave
96+
9097
;Start Menu Folder Page Configuration
9198
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
9299
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${GAME_NAME}"
@@ -106,6 +113,47 @@
106113
!insertmacro MUI_UNPAGE_CONFIRM
107114
!insertmacro MUI_UNPAGE_INSTFILES
108115

116+
117+
${StrStr}
118+
Function ExtraOptions
119+
120+
;Don't allow Portable Mode in Program Files
121+
${StrStr} $0 $INSTDIR $PROGRAMFILES32
122+
StrCmp $0 "" 0 portable_no
123+
${StrStr} $0 $INSTDIR $PROGRAMFILES64
124+
StrCmp $0 "" portable_yes portable_no
125+
126+
portable_no:
127+
StrCpy $PortableMode ${BST_UNCHECKED}
128+
Abort
129+
130+
portable_yes:
131+
!insertmacro MUI_HEADER_TEXT $(SETUP_EXTRA_OPTIONS_TITLE) $(SETUP_EXTRA_OPTIONS_SUBTITLE)
132+
133+
nsDialogs::Create 1018
134+
Pop $ZDialog
135+
136+
${If} $ZDialog == error
137+
Abort
138+
${EndIf}
139+
140+
${NSD_CreateCheckBox} 0 0 100% 10u $(SETUP_PORTABLE)
141+
Pop $ZCheckPortable
142+
${NSD_SetState} $ZCheckPortable $PortableMode
143+
144+
${NSD_CreateLabel} 0 15u 100% 20u $(SETUP_PORTABLE_DESC)
145+
Pop $ZLabelPortable
146+
147+
nsDialogs::Show
148+
149+
FunctionEnd
150+
151+
Function ExtraOptionsSave
152+
153+
${NSD_GetState} $ZCheckPortable $PortableMode
154+
155+
FunctionEnd
156+
109157
Function XcomFolder
110158

111159
!insertmacro MUI_HEADER_TEXT $(SETUP_XCOM_FOLDER_TITLE) $(SETUP_XCOM_FOLDER_SUBTITLE)
@@ -223,9 +271,11 @@ ${EndIf}
223271
!endif
224272
File "..\..\LICENSE.txt"
225273
File "..\..\CHANGELOG.txt"
226-
File "..\..\README.md"
274+
File /oname=README.txt "..\..\README.md"
275+
276+
;Copy UFO files
277+
SetOutPath "$INSTDIR\UFO"
227278

228-
;Copy UFO files
229279
IfFileExists "$UFO_DIR\*.*" 0 install_ufo_no
230280

231281
CreateDirectory "$INSTDIR\UFO\GEODATA"
@@ -248,8 +298,11 @@ ${EndIf}
248298
CopyFiles /SILENT "$UFO_DIR\UNITS\*.*" "$INSTDIR\UFO\UNITS"
249299

250300
install_ufo_no:
301+
File "..\..\bin\UFO\README.txt"
302+
303+
;Copy TFTD files
304+
SetOutPath "$INSTDIR\TFTD"
251305

252-
;Copy TFTD files
253306
IfFileExists "$TFTD_DIR\*.*" 0 install_tftd_no
254307

255308
CreateDirectory "$INSTDIR\TFTD\ANIMS"
@@ -274,14 +327,17 @@ ${EndIf}
274327
CopyFiles /SILENT "$TFTD_DIR\UNITS\*.*" "$INSTDIR\TFTD\UNITS"
275328

276329
install_tftd_no:
330+
File "..\..\bin\TFTD\README.txt"
277331

278332
SetOutPath "$INSTDIR"
279333

280-
File "..\..\bin\TFTD\README.txt"
281-
File "..\..\bin\UFO\README.txt"
282334
File /r "..\..\bin\common"
283335
File /r "..\..\bin\standard"
284336

337+
${If} $PortableMode == ${BST_CHECKED}
338+
CreateDirectory "$INSTDIR\user"
339+
${EndIf}
340+
285341
;Store installation folder
286342
WriteRegStr HKLM "Software\${GAME_NAME}" "" $INSTDIR
287343

@@ -307,8 +363,12 @@ ${EndIf}
307363
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
308364
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${GAME_NAME}.lnk" "$INSTDIR\OpenXcom.exe"
309365
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_CHANGELOG).lnk" "$INSTDIR\CHANGELOG.txt"
310-
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_README).lnk" "$INSTDIR\README.md"
366+
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_README).lnk" "$INSTDIR\README.txt"
367+
${If} $PortableMode == ${BST_CHECKED}
368+
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_USER).lnk" "$INSTDIR\user"
369+
${Else}
311370
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_USER).lnk" "$DOCUMENTS\OpenXcom"
371+
${EndIf}
312372
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_UNINSTALL).lnk" "$INSTDIR\Uninstall.exe"
313373

314374
!insertmacro MUI_STARTMENU_WRITE_END
@@ -338,18 +398,6 @@ Section "$(SETUP_PATCH)" SecPatch
338398

339399
SectionEnd
340400

341-
Section /o "$(SETUP_PORTABLE)" SecPortable
342-
343-
CreateDirectory "$INSTDIR\user"
344-
345-
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
346-
347-
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(SETUP_SHORTCUT_USER).lnk" "$INSTDIR\user"
348-
349-
!insertmacro MUI_STARTMENU_WRITE_END
350-
351-
SectionEnd
352-
353401
Section /o "$(SETUP_DESKTOP)" SecDesktop
354402

355403
SetOutPath "$INSTDIR"
@@ -365,7 +413,6 @@ SectionEnd
365413
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
366414
!insertmacro MUI_DESCRIPTION_TEXT ${SecMain} $(SETUP_GAME_DESC)
367415
!insertmacro MUI_DESCRIPTION_TEXT ${SecPatch} $(SETUP_PATCH_DESC)
368-
!insertmacro MUI_DESCRIPTION_TEXT ${SecPortable} $(SETUP_PORTABLE_DESC)
369416
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} $(SETUP_DESKTOP_DESC)
370417
!insertmacro MUI_FUNCTION_DESCRIPTION_END
371418

@@ -382,6 +429,7 @@ ${Else}
382429
${EndIf}
383430
!endif
384431
StrCpy $StartMenuFolder "${GAME_NAME}"
432+
StrCpy $PortableMode ${BST_UNCHECKED}
385433

386434
; Check for existing X-COM installs
387435
StrCpy $UFO_DIR ""
@@ -543,9 +591,8 @@ Section "-un.Main"
543591

544592
Delete "$INSTDIR\OpenXcom.exe"
545593
Delete "$INSTDIR\*.dll"
546-
Delete "$INSTDIR\LICENSE.txt"
547-
Delete "$INSTDIR\README.md"
548-
Delete "$INSTDIR\CHANGELOG.txt"
594+
Delete "$INSTDIR\*.txt"
595+
Delete "$INSTDIR\*.md"
549596

550597
RMDir /r "$INSTDIR\common"
551598
RMDir /r "$INSTDIR\standard"

0 commit comments

Comments
 (0)