diff options
author | Jörg Frings-Fürst <jff@merkur> | 2014-07-06 15:20:38 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <jff@merkur> | 2014-07-06 15:20:38 +0200 |
commit | 126bb8cb6b93240bb4d3a2b816b74c286c3d422b (patch) | |
tree | e66e1dfe77d53a52539489765c88d23e4423ae27 /packages/win32/gcstar.nsi |
Imported Upstream version 1.7.0upstream/1.7.0
Diffstat (limited to 'packages/win32/gcstar.nsi')
-rw-r--r-- | packages/win32/gcstar.nsi | 362 |
1 files changed, 362 insertions, 0 deletions
diff --git a/packages/win32/gcstar.nsi b/packages/win32/gcstar.nsi new file mode 100644 index 0000000..e426da2 --- /dev/null +++ b/packages/win32/gcstar.nsi @@ -0,0 +1,362 @@ +; NSIS for GCstar ( http://www.gcstar.org/ ) +; Based on Frozen Bubble NSIS + +; Helper defines +!define PRODUCT_NAME "GCstar" +!define PRODUCT_VERSION "1.7.0" +!define PRODUCT_PUBLISHER "Tian" +!define PRODUCT_WEB_SITE "http://www.gcstar.org/" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" +!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "img\icon_install.ico" +!define MUI_UNICON "img\icon_uninstall.ico" +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_RIGHT +!define MUI_HEADERIMAGE_BITMAP "img\banner_top.bmp" +!define MUI_HEADERIMAGE_UNBITMAP "img\uninstall_top.bmp" + +!define MUI_COMPONENTSPAGE_CHECKBITMAP "img\checks.bmp" + +!define MUI_FINISHPAGE_RUN +!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchGCstar" +!define MUI_FINISHPAGE_RUN_TEXT "$(FINISH_LAUNCH)" + +!define MUI_FINISHPAGE_LINK "$(FINISH_WEBSITE)" +!define MUI_FINISHPAGE_LINK_LOCATION "${PRODUCT_WEB_SITE}" +!define MUI_FINISHPAGE_LINK_COLOR "1C86EE" + +;COLORS +!define MUI_BGCOLOR "FFFFFF" +!define MUI_LICENSEPAGE_BGCOLOR "FFFFFF" +!define MUI_INSTALLCOLORS "1C86EE FFFFFF" +!define MUI_INSTFILESPAGE_COLORS "1C86EE FFFFFF" + +; Language Selection Dialog Settings +!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" +!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" +!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" + +; Welcome page +!define MUI_WELCOMEFINISHPAGE_BITMAP "img\banner_left.bmp" +!insertmacro MUI_PAGE_WELCOME +; License page +!define MUI_LICENSEPAGE_CHECKBOX +!insertmacro MUI_PAGE_LICENSE "LICENSE" +; Components page +!insertmacro MUI_PAGE_COMPONENTS +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Start menu page +var ICONS_GROUP +;!define MUI_STARTMENUPAGE_NODISABLE +!define MUI_STARTMENUPAGE_DEFAULTFOLDER "GCstar" +!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" +!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; MUI end ------ + +; Languages +!include "gcs_lang.nsh" + +${LANG_LOAD} "Bulgarian" +${LANG_LOAD} "Czech" +${LANG_LOAD} "German" +${LANG_LOAD} "English" +${LANG_LOAD} "Spanish" +${LANG_LOAD} "French" +${LANG_LOAD} "Italian" +${LANG_LOAD} "Polish" +${LANG_LOAD} "Romanian" +${LANG_LOAD} "Russian" +${LANG_LOAD} "SerbianLatin" +${LANG_LOAD} "Turkish" + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "${PRODUCT_NAME}_${PRODUCT_VERSION}_Setup.exe" +InstallDir "$PROGRAMFILES\GCstar" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails hide +ShowUnInstDetails hide + +InstType "$(INSTALL_APP_DEP)" +InstType "$(INSTALL_APP_ONLY)" +InstType "$(INSTALL_FULL)" + +Function .onInit + SetShellVarContext all + !define MUI_LANGDLL_ALWAYSSHOW + !insertmacro MUI_LANGDLL_DISPLAY + + ;Prevent Multiple Instances: + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "GCstarSetup") i .r1 ?e' + Pop $R0 + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "$(PRE_MULTIPLE)" + Abort + + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \ + "UninstallString" + StrCmp $R0 "" NoRemove + Return + NoRemove: + SectionSetText 0 "" ; and make invisible so user doesn't see it + Return +FunctionEnd + +Function LaunchGCstar + SetOutPath "$INSTDIR\bin" + Exec "$\"$INSTDIR\bin\gcstar.bat$\"" +FunctionEnd + +Section "$(SEC_UN)" SEC01 + SetShellVarContext all + SectionIn 3 + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \ + "UninstallString" + StrCmp $R0 "" NoRemove + call RemovePrevious + NoRemove: +SectionEnd + +Section "!GCstar" SEC02 + SetShellVarContext all + SectionIn 1 2 3 RO + SetOutPath "$INSTDIR" + SetOverwrite try + File /r "lib" + File /r "share" + File /r "usr" + + SetOutPath "$INSTDIR\bin" + File "bin\gcstar.exe" + File "bin\gcstar.bat" + File "bin\update.bat" + + FileOpen $1 "$INSTDIR\bin\gcstar.bat" a + FileSeek $1 0 END + FileWrite $1 "set LANG=$(LANG_CODE)$\r$\n" + FileWrite $1 "start gcstar.exe %1$\r$\n" + FileClose $1 + + Call SetFileAssociation + +; Shortcuts + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(LINK_APPLICATION).lnk" '"$INSTDIR\bin\gcstar.bat"' "" $INSTDIR\share\gcstar\icons\GCstar.ico "" SW_SHOWMINIMIZED "" "$(LINK_APPLICATION_DESCRIPTION)" + !insertmacro MUI_STARTMENU_WRITE_END +SectionEnd + +SectionGroup "$(SEC_ICONS)" GroupSec02 + +Section "$(SEC_DSK)" SEC05 + SetShellVarContext all + SectionIn 1 3 + SetOutPath "$INSTDIR\bin" + CreateShortCut "$DESKTOP\$(LINK_APPLICATION).lnk" '"$INSTDIR\bin\gcstar.bat"' "" $INSTDIR\share\gcstar\icons\GCstar.ico "" SW_SHOWMINIMIZED "" "$(LINK_APPLICATION_DESCRIPTION)" +SectionEnd + +Section "$(SEC_QUICK)" SEC06 + SetShellVarContext all + SectionIn 1 3 + StrCmp $QUICKLAUNCH $TEMP +3 + SetOutPath "$INSTDIR\bin" + CreateShortCut "$QUICKLAUNCH\$(LINK_APPLICATION).lnk" '"$INSTDIR\bin\gcstar.bat"' "" $INSTDIR\share\gcstar\icons\GCstar.ico "" SW_SHOWMINIMIZED "" "$(LINK_APPLICATION_DESCRIPTION)" +SectionEnd + +SectionGroupEnd + +Section -AdditionalIcons + SetShellVarContext all + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(LINK_UPDATE).lnk" '"$INSTDIR\bin\update.bat"' "" $INSTDIR\share\gcstar\icons\icon_install.ico "" "" "" "$(LINK_UPDATE_DESCRIPTION)" + WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(LINK_SITE).lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" $INSTDIR\share\gcstar\icons\web.ico "" "" "" "$(LINK_SITE_DESCRIPTION)" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\$(LINK_REMOVE).lnk" "$INSTDIR\uninst.exe" "" "" "" "" "" "$(LINK_REMOVE_DESCRIPTION)" + !insertmacro MUI_STARTMENU_WRITE_END +SectionEnd + +Section -Post + SetShellVarContext all + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\gcstar" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" +SectionEnd + +; Section descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN +; !insertmacro MUI_DESCRIPTION_TEXT ${GroupSec00} "$(DESC_DEPENDENCIES)" +; !insertmacro MUI_DESCRIPTION_TEXT ${SEC00} "$(DESC_ACTIVEPERL)" +; !insertmacro MUI_DESCRIPTION_TEXT ${GroupSec01} "$(DESC_GTKPERL)" +; !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "$(DESC_GTK)" +; !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "$(DESC_PERL)" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "$(DESC_UN)" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "$(DESC_APP)" + !insertmacro MUI_DESCRIPTION_TEXT ${GroupSec02} "$(DESC_ICONS)" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "$(DESC_DESKTOP)" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "$(DESC_QUICK)" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) has been successfullly removed from your computer." +FunctionEnd + +Function un.onInit + !insertmacro MUI_UNGETLANGUAGE +FunctionEnd + +Section Uninstall + SetShellVarContext all + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(UN_QUESTION)" IDYES DoUnInstall + + Abort "$(UN_ABORTED)" + Quit + + DoUnInstall: + + !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP + + Delete "$DESKTOP\$(LINK_APPLICATION).lnk" + Delete "$QUICKLAUNCH\$(LINK_APPLICATION).lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\$(LINK_APPLICATION).lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\$(LINK_UPDATE).lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\$(LINK_SITE).lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\$(LINK_REMOVE).lnk" + RMDir "$SMPROGRAMS\$ICONS_GROUP" + + RMDir /r "$INSTDIR\bin" + RMDir /r "$INSTDIR\lib" + RMDir /r "$INSTDIR\share" + RMDir /r "$INSTDIR\usr" + + Delete "$INSTDIR\*" + + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(UN_PERSO)" IDNO ContinueUnInstall + + RMDir /r "$INSTDIR\data" + RMDir /r "$INSTDIR\config" + + ContinueUninstall: + + Call un.RemoveFileAssociation + + StrCpy $5 "all" + Push "$INSTDIR\bin" + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + + RMDir "$INSTDIR" + + SetAutoClose true +SectionEnd + +;---------------------------------------- +; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02" +;---------------------------------------- +!verbose 3 +!include "WinMessages.nsh" +!verbose 4 +;==================================================== +; Usefull for file association +;==================================================== +Function SetFileAssociation + !define Index "Line${__LINE__}" + ReadRegStr $1 HKCR ".gcs" "" + StrCmp $1 "" "${Index}-NoBackup" + StrCmp $1 "GCstarFile" "${Index}-NoBackup" + WriteRegStr HKCR ".gcs" "backup_val" $1 + "${Index}-NoBackup:" + WriteRegStr HKCR ".gcs" "" "GCstarFile" + ReadRegStr $0 HKCR "GCstarFile" "" + StrCmp $0 "" 0 "${Index}-Skip" + WriteRegStr HKCR "GCstarFile" "" "$(FILE_DESC)" + WriteRegStr HKCR "GCstarFile\shell" "" "open" + WriteRegStr HKCR "GCstarFile\DefaultIcon" "" "$INSTDIR\share\gcstar\icons\GCstar.ico" + "${Index}-Skip:" + WriteRegStr HKCR "GCstarFile\shell\open\command" "" \ + '"$INSTDIR\bin\gcstar.bat" "%1"' + !undef Index + Call RefreshShellIcons +FunctionEnd + +Function un.RemoveFileAssociation + !define Index "Line${__LINE__}" + ReadRegStr $1 HKCR ".gcs" "" + StrCmp $1 "GCstarFile" 0 "${Index}-NoOwn" ; only do this if we own it + ReadRegStr $1 HKCR ".gcs" "backup_val" + StrCmp $1 "" 0 "${Index}-Restore" ; if backup="" then delete the whole key + DeleteRegKey HKCR ".gcs" + Goto "${Index}-NoOwn" + "${Index}-Restore:" + WriteRegStr HKCR ".gcs" "" $1 + DeleteRegValue HKCR ".gcs" "backup_val" + + "${Index}-NoOwn:" + DeleteRegKey HKCR "GCstarFile" ;Delete key with association settings + !undef Index + Call un.RefreshShellIcons +FunctionEnd + +!define SHCNE_ASSOCCHANGED 0x08000000 +!define SHCNF_IDLIST 0 + +Function RefreshShellIcons + ; By jerome tremblay - april 2003 + System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ + (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' +FunctionEnd + +Function un.RefreshShellIcons + ; By jerome tremblay - april 2003 + System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ + (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' +FunctionEnd + +Function RemovePrevious + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \ + "DisplayVersion" + + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \ + "UninstallString" + + ;Run the uninstaller + ClearErrors + ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file + + IfErrors no_remove_uninstaller + ;You can either use Delete /REBOOTOK in the uninstaller or add some code + ;here to remove to remove the uninstaller. Use a registry key to check + ;whether the user has chosen to uninstall. If you are using an uninstaller + ;components page, make sure all sections are uninstalled. + no_remove_uninstaller: + +FunctionEnd + |