From ae103809275f4c13e07ac4d6ca57105b299fb662 Mon Sep 17 00:00:00 2001 From: scorpio810 Date: Tue, 4 Aug 2015 19:24:52 +0000 Subject: [PATCH] Add NSIS script for x86_64-w64 installer git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4085 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- packaging/windows/QET64.nsi | 224 ++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 packaging/windows/QET64.nsi diff --git a/packaging/windows/QET64.nsi b/packaging/windows/QET64.nsi new file mode 100644 index 000000000..28bc9050c --- /dev/null +++ b/packaging/windows/QET64.nsi @@ -0,0 +1,224 @@ +; Installation script for QET +; Written by Cyril Frausti and Laurent Trinques +; Licence : CC-BY-SA - http://creativecommons.org/licenses/by-sa/3.0/ +; WebSite : http://qelectrotech.org/ + +;-------------------------------- +;Include Modern UI + !include x64.nsh + !include "MUI2.nsh" + !ifndef PROC + + !define PROC 32 ; to be defined in cmd line + +!endif + +LangString wrongWow ${LANG_ENGLISH} "This distribution is for ${PROC} bits computers only." +LangString wrongWow ${LANG_FRENCH} "Ce programme est pour Windows ${PROC} bits seulement." + +; MUI Settings +;-------------------------------- +;General + ; General Product Description Definitions + !define SOFT_NAME "QElectroTech" + !define SOFT_VERSION "0.5-dev_x86_64-win64+4082" + !define SOFT_WEB_SITE "http://qelectrotech.org/" + !define SOFT_BUILD "1" + + + SetCompressor /final /solid lzma + CRCCheck force + XPStyle on + + + ;Name and file + Name "${SOFT_NAME} ${SOFT_VERSION}" + OutFile "Installer_${SOFT_NAME}-${SOFT_VERSION}-${SOFT_BUILD}.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES64\${SOFT_NAME}" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\${SOFT_NAME}" "" + + ;Request application privileges for Windows Vista + ; we request for admin because we write stuff into the registry + RequestExecutionLevel admin + +;-------------------------------- +;Interface Settings + !define MUI_ABORTWARNING + !define MUI_ICON "install.ico" + !define MUI_UNICON "uninstall.ico" + +;-------------------------------- +;Language Selection Dialog Settings + + ;Remember the installer language + !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" + !define MUI_LANGDLL_REGISTRY_KEY "Software\${SOFT_NAME}" + !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "files\LICENSE" + ;!insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + ;Since NSIS 2.26, the language selection dialog of Modern UI hides languages unsupported by the user's selected codepage by default. + ;To revert to the old behavior and display all languages, no matter what the user will see when they're selected, use MUI_LANGDLL_ALLLANGUAGES. + !define MUI_LANGDLL_ALLLANGUAGES + + ; For consistency, we limit the installer to languages supported by QElectroTech itself + !insertmacro MUI_LANGUAGE "English" ;first language is the default language + !insertmacro MUI_LANGUAGE "French" + !insertmacro MUI_LANGUAGE "Spanish" + !insertmacro MUI_LANGUAGE "Russian" + !insertmacro MUI_LANGUAGE "Portuguese" + !insertmacro MUI_LANGUAGE "Czech" + !insertmacro MUI_LANGUAGE "Polish" + !insertmacro MUI_LANGUAGE "Greek" + !insertmacro MUI_LANGUAGE "Arabic" + !insertmacro MUI_LANGUAGE "German" + !insertmacro MUI_LANGUAGE "Italian" + !insertmacro MUI_LANGUAGE "Romanian" + !insertmacro MUI_LANGUAGE "Catalan" + !insertmacro MUI_LANGUAGE "Croatian" + ;!insertmacro MUI_LANGUAGE "Nederland" + +;-------------------------------- +;Reserve Files + + ;If you are using solid compression, files that are required before + ;the actual installation should be stored first in the data block, + ;because this will make your installer start faster. + + !insertmacro MUI_RESERVEFILE_LANGDLL + +;-------------------------------- +;Installer Sections + +Section "" + SetOutPath "$INSTDIR" + ; copy every files in the "files" directory, except the ready-to-use .bat file + File /nonfatal /r /x "files\Lancer QET.bat" /x ".svn" "files\*" + ; add the use-APPDATA .bat file + File "Lancer QET.bat" + ;Store installation folder + WriteRegStr HKCU "Software\${SOFT_NAME}" "" $INSTDIR + ; write uninstall strings + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" "DisplayName" "${SOFT_NAME} (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" "UninstallString" '"$INSTDIR\Uninstall.exe"' + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + SetRegView 64 + + ; get the final path for the icons and the launch script + Var /GLOBAL final_qet_exe + Var /GLOBAL final_project_ico + Var /GLOBAL final_element_ico + Var /GLOBAL final_titleblock_ico + + StrCpy $final_qet_exe "$INSTDIR\Lancer QET.bat" + StrCpy $final_project_ico "$INSTDIR\ico\application-x-qet-project.ico" + StrCpy $final_element_ico "$INSTDIR\ico\application-x-qet-element.ico" + StrCpy $final_titleblock_ico "$INSTDIR\ico\application-x-qet-titleblock.ico" + + ; write file associations registry keys + WriteRegStr HKEY_CLASSES_ROOT "Applications\qelectrotech.exe\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\"" + WriteRegStr HKEY_CLASSES_ROOT ".qet" "" "qet_diagram_file" + WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file" "" "Schéma QET" + WriteRegDWORD HKEY_CLASSES_ROOT "qet_diagram_file" "EditFlags" 0x00000000 + WriteRegDWORD HKEY_CLASSES_ROOT "qet_diagram_file" "BrowserFlags" 0x00000008 + WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\DefaultIcon" "" "$final_project_ico" + WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\"" + WriteRegStr HKEY_CLASSES_ROOT ".elmt" "" "qet_element_file" + WriteRegStr HKEY_CLASSES_ROOT "qet_element_file" "" "Élément QET" + WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "EditFlags" 0x00000000 + WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "BrowserFlags" 0x00000008 + WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\DefaultIcon" "" "$final_element_ico" + WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\shell\open\command" "" "$\"$final_qet_exe$\" $\"%1$\"" + + SetShellVarContext all ; all users + ; shortcuts in the start menu + CreateDirectory "$SMPROGRAMS\${SOFT_NAME}" + CreateShortCut "$SMPROGRAMS\${SOFT_NAME}\QElectroTech.lnk" "$INSTDIR\Lancer QET.bat" 0 "$INSTDIR\ico\qelectrotech.ico" + CreateShortCut "$SMPROGRAMS\${SOFT_NAME}\Uninstall QElectroTech.lnk" "$INSTDIR\Uninstall.exe" + ; TODO : add the QuickStart Guide (or any other documentation) when available + + ; shortcut on the desktop + CreateShortCut "$DESKTOP\QElectroTech.lnk" "$INSTDIR\Lancer QET.bat" 0 "$INSTDIR\ico\qelectrotech.ico" +SectionEnd + +;-------------------------------- +;Installer Functions + +Function .onInit +${If} ${RunningX64} + +${Else} + MessageBox MB_OK|MB_ICONSTOP $(wrongWow) + Abort $(wrongWow) + DetailPrint "This program is only for Windows 64" +${EndIf} + !insertmacro MUI_LANGDLL_DISPLAY + +FunctionEnd + +;-------------------------------- +;Descriptions + + ;USE A LANGUAGE STRING IF YOU WANT YOUR DESCRIPTIONS TO BE LANGAUGE SPECIFIC + + ;Assign descriptions to sections + ;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + ; !insertmacro MUI_DESCRIPTION_TEXT ${CopyFiles} "CopyFiles" + ;!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + SetShellVarContext all ; all users + ; remove start menu shortcuts + RMDir /r "$SMPROGRAMS\${SOFT_NAME}" + ; remove shortcut on the desktop + Delete "$DESKTOP\QElectroTech.lnk" + + ; remove the application files + Delete "$INSTDIR\*.*" + RMDir /r "$INSTDIR" + + ;remove installation registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" + DeleteRegKey /ifempty HKCU "Software\${SOFT_NAME}" + + ; remove file associations registry keys + DeleteRegKey HKEY_CLASSES_ROOT "Applications\qelectrotech.exe" + DeleteRegKey HKEY_CLASSES_ROOT ".qet" + DeleteRegKey HKEY_CLASSES_ROOT "qet_diagram_file" + DeleteRegKey HKEY_CLASSES_ROOT ".elmt" + DeleteRegKey HKEY_CLASSES_ROOT "qet_element_file" + + IfFileExists "$INSTDIR" 0 NoErrorMsg + MessageBox MB_OK "Note: $INSTDIR could not be removed!" IDOK 0 ; skipped if file doesn't exist + NoErrorMsg: +SectionEnd + +;-------------------------------- +;Uninstaller Functions + +Function un.onInit + + !insertmacro MUI_UNGETLANGUAGE + +FunctionEnd + +