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
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}"
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+
109157Function 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
339399SectionEnd
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-
353401Section /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