; TODO: PRODUCT_VERSION !define PRODUCT_NAME "OpenClonk" !define PRODUCT_PUBLISHER "OpenClonk Development Team" !define PRODUCT_WEB_SITE "http://www.openclonk.org" !define PRODUCT_WEB_SITE_NAME "OpenClonk Website" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_USER_KEY "Software\OpenClonk\OpenClonk" !define PRODUCT_COMPANY_KEY "Software\OpenClonk" !define PRODUCT_USER_ROOT_KEY "HKCU" !define PRODUCT_UNINST_ROOT_KEY "HKLM" ; zlib compression creates a corrupted installer!? SetCompressor lzma ; MUI 1.67 compatible ------ !include "MUI.nsh" ; MUI Settings !define MUI_ICON "inst.ico" !define MUI_UNICON "uninst.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP "header.bmp" ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Instfiles page !insertmacro MUI_PAGE_INSTFILES ; Uninstaller pages !insertmacro MUI_UNPAGE_INSTFILES ; Language files !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "English" ; Overwrite language strings LangString MUI_TEXT_WELCOME_INFO_TITLE ${LANG_German} "Willkommen zu ${PRODUCT_NAME}!" LangString MUI_TEXT_WELCOME_INFO_TITLE ${LANG_English} "Welcome to ${PRODUCT_NAME}!" LangString MUI_TEXT_FINISH_INFO_TITLE ${LANG_German} "Die Installation wird abgeschlossen." ; Additional language strings LangString MUI_TEXT_USERPATH ${LANG_German} "Benutzerpfad" LangString MUI_TEXT_USERPATH ${LANG_English} "User Path" ; Reserve files !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; MUI end ------ Name "${PRODUCT_NAME}" OutFile "..\oc.exe" InstallDir "@PROGRAMFILES@\OpenClonk" ShowInstDetails show ShowUnInstDetails show Section "MainSection" SEC01 SetOutPath "$INSTDIR" SetOverwrite on ; Main program files File "Clonk.exe" File "c4group.exe" File "*.dll" File "*.c4?" File "AUTHORS" File "COPYING" File "LGPL.txt" File "OpenSSL.txt" ; Create user path (works for the installing user only... might also want to put an info.txt dummy in there...) CreateDirectory "$APPDATA\OpenClonk" ; Create desktop shortcut CreateShortcut "$DESKTOP\OpenClonk.lnk" "$INSTDIR\Clonk.exe" ; Create website url in program directory WriteIniStr "$INSTDIR\${PRODUCT_WEB_SITE_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" ; Create user path shortcut in program directory CreateShortCut "$INSTDIR\$(MUI_TEXT_USERPATH).lnk" "%APPDATA%\OpenClonk" ; Start menu shortcuts (All Users) SetShellVarContext all CreateDirectory "$SMPROGRAMS\OpenClonk" CreateShortCut "$SMPROGRAMS\OpenClonk\OpenClonk.lnk" "$INSTDIR\Clonk.exe" CreateShortCut "$SMPROGRAMS\OpenClonk\OpenClonk Editor.lnk" "$INSTDIR\Clonk.exe" "--editor" CreateShortCut "$SMPROGRAMS\OpenClonk\${PRODUCT_WEB_SITE_NAME}.lnk" "$INSTDIR\${PRODUCT_WEB_SITE_NAME}.url" CreateShortCut "$SMPROGRAMS\OpenClonk\$(MUI_TEXT_USERPATH).lnk" "%APPDATA%\OpenClonk" SectionEnd Section -Post ; Uninstaller info WriteUninstaller "$INSTDIR\uninst.exe" 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\Clonk.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" ; Register file types WriteRegStr HKCR ".ocs" "" "OpenClonk.Scenario" WriteRegStr HKCR ".ocs\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".ocg" "" "OpenClonk.Group" WriteRegStr HKCR ".ocg\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".ocf" "" "OpenClonk.Folder" WriteRegStr HKCR ".ocf\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".ocp" "" "OpenClonk.Player" WriteRegStr HKCR ".ocp\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".ocd" "" "OpenClonk.Definition" WriteRegStr HKCR ".ocd\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".oci" "" "OpenClonk.Object" WriteRegStr HKCR ".oci\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".c4m" "" "Clonk4.Material" WriteRegStr HKCR ".c4m\Content Type" "" "text/plain" WriteRegStr HKCR ".c4b" "" "Clonk4.Binary" WriteRegStr HKCR ".c4b\Content Type" "" "application/octet-stream" WriteRegStr HKCR ".c4v" "" "Clonk4.Video" WriteRegStr HKCR ".c4v\Content Type" "" "video/avi" WriteRegStr HKCR ".c4l" "" "Clonk4.Weblink" WriteRegStr HKCR ".c4l\Content Type" "" "vnd.clonk.c4group" WriteRegStr HKCR ".c4u" "" "Clonk4.Update" WriteRegStr HKCR ".c4u\Content Type" "" "vnd.clonk.c4group" ; Register file classes WriteRegStr HKCR "OpenClonk.Scenario" "" "OpenClonk Scenario" WriteRegStr HKCR "OpenClonk.Scenario\DefaultIcon" "" "$INSTDIR\Clonk.exe,1" WriteRegStr HKCR "OpenClonk.Group" "" "OpenClonk Group" WriteRegStr HKCR "OpenClonk.Group\DefaultIcon" "" "$INSTDIR\Clonk.exe,2" WriteRegStr HKCR "OpenClonk.Folder" "" "OpenClonk Folder" WriteRegStr HKCR "OpenClonk.Folder\DefaultIcon" "" "$INSTDIR\Clonk.exe,3" WriteRegStr HKCR "OpenClonk.Player" "" "OpenClonk Player" WriteRegStr HKCR "OpenClonk.Player\DefaultIcon" "" "$INSTDIR\Clonk.exe,4" WriteRegStr HKCR "OpenClonk.Definition" "" "OpenClonk Object Definition" WriteRegStr HKCR "OpenClonk.Definition\DefaultIcon" "" "$INSTDIR\Clonk.exe,5" WriteRegStr HKCR "OpenClonk.Object" "" "OpenClonk Object Info" WriteRegStr HKCR "OpenClonk.Object\DefaultIcon" "" "$INSTDIR\Clonk.exe,6" WriteRegStr HKCR "Clonk4.Material" "" "Clonk 4 Material" WriteRegStr HKCR "Clonk4.Material\DefaultIcon" "" "$INSTDIR\Clonk.exe,7" WriteRegStr HKCR "Clonk4.Binary" "" "Clonk 4 Binary" WriteRegStr HKCR "Clonk4.Binary\DefaultIcon" "" "$INSTDIR\Clonk.exe,8" WriteRegStr HKCR "Clonk4.Video" "" "Clonk 4 Video" WriteRegStr HKCR "Clonk4.Video\DefaultIcon" "" "$INSTDIR\Clonk.exe,9" WriteRegStr HKCR "Clonk4.Weblink" "" "Clonk 4 Weblink" WriteRegStr HKCR "Clonk4.Weblink\DefaultIcon" "" "$INSTDIR\Clonk.exe,10" WriteRegStr HKCR "Clonk4.Update" "" "Clonk 4 Update" WriteRegStr HKCR "Clonk4.Update\DefaultIcon" "" "$INSTDIR\Clonk.exe,11" ; Register additional file handling WriteRegStr HKCR "Clonk4.Update\Shell\Update" "" "Update" WriteRegStr HKCR "Clonk4.Update\Shell\Update\Command" "" "$\"$INSTDIR\Clonk.exe$\" $\"%1$\"" ; Remove old use of App Paths DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\Clonk.exe" SectionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) wurde erfolgreich deinstalliert." FunctionEnd Function un.onInit MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Sind Sie sicher, dass Sie $(^Name) deinstallieren wollen?" IDYES +2 Abort FunctionEnd Section Uninstall ; Installation directory Delete "$INSTDIR\Clonk.exe" Delete "$INSTDIR\c4group.exe" Delete "$INSTDIR\*.dll" Delete "$INSTDIR\*.c4?" Delete "$INSTDIR\AUTHORS" Delete "$INSTDIR\COPYING" Delete "$INSTDIR\LGPL.txt" Delete "$INSTDIR\OpenSSL.txt" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\${PRODUCT_WEB_SITE_NAME}.url" Delete "$INSTDIR\$(MUI_TEXT_USERPATH).lnk" RMDir "$INSTDIR" ; Desktop shortcut Delete "$DESKTOP\OpenClonk.lnk" ; Registry: config DeleteRegKey ${PRODUCT_USER_ROOT_KEY} "${PRODUCT_USER_KEY}" DeleteRegKey /ifempty ${PRODUCT_USER_ROOT_KEY} "${PRODUCT_COMPANY_KEY}" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" ; Registry: classes DeleteRegKey HKCR ".ocs" DeleteRegKey HKCR "OpenClonk.Scenario" DeleteRegKey HKCR ".ocg" DeleteRegKey HKCR "OpenClonk.Group" DeleteRegKey HKCR ".ocf" DeleteRegKey HKCR "OpenClonk.Folder" DeleteRegKey HKCR ".ocp" DeleteRegKey HKCR "OpenClonk.Player" DeleteRegKey HKCR ".ocd" DeleteRegKey HKCR "OpenClonk.Definition" DeleteRegKey HKCR ".oci" DeleteRegKey HKCR "OpenClonk.Object" DeleteRegKey HKCR ".c4m" DeleteRegKey HKCR "Clonk4.Material" DeleteRegKey HKCR ".c4b" DeleteRegKey HKCR "Clonk4.Binary" DeleteRegKey HKCR ".c4v" DeleteRegKey HKCR "Clonk4.Video" DeleteRegKey HKCR ".c4l" DeleteRegKey HKCR "Clonk4.Weblink" DeleteRegKey HKCR ".c4u" DeleteRegKey HKCR "Clonk4.Update" ; Start menu shortcuts (All Users) SetShellVarContext all Delete "$SMPROGRAMS\OpenClonk\*.lnk" RMDir "$SMPROGRAMS\OpenClonk" SetAutoClose true SectionEnd