changeset 51:e9cc707838d1

Add Windows packaging
author Andre Heinecke <andre.heinecke@intevation.de>
date Tue, 19 Jul 2016 17:44:17 +0200
parents 36ee5dd46fd3
children 263880612637
files packaging/eduexportconvert.nsi packaging/resources/header-install.bmp packaging/resources/header-uninstall.bmp packaging/resources/install.ico packaging/resources/uninstall.ico packaging/resources/wizard-install.bmp packaging/resources/wizard-uninstall.bmp packaging/win-createpackage.sh.in
diffstat 8 files changed, 250 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/eduexportconvert.nsi	Tue Jul 19 17:44:17 2016 +0200
@@ -0,0 +1,222 @@
+; Copyright (C) 2016 by ETH Zürich
+; Software engineering by Intevation GmbH
+;
+; This file is Free Software under the GNU GPL (v>=2)
+; and comes with ABSOLUTELY NO WARRANTY!
+; See LICENSE.txt for details.
+
+; This script creates the installer for renameme it needs the
+; following definitions to be set when calling makensis:
+;
+; productname: Name of the Software as it will show up under installed
+;               Software
+; version_number: The version of the software
+; setupname: The name for the result created by this
+; productname_short: Used for the default folder name and such
+; size: the expectes size of the installation.
+
+;--------------------------------
+; Includes
+
+!define MULTIUSER_EXECUTIONLEVEL Highest
+!define MULTIUSER_MUI
+!define MULTIUSER_INSTALLMODE_COMMANDLINE
+!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\${productname_short}"
+!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "InstallMode"
+!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\${productname_short}"
+!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "InstallDir"
+!define MULTIUSER_INSTALLMODE_INSTDIR "${productname}"
+
+!addincludedir "${plugin_dir}"
+
+!include "MultiUser.nsh"
+!include "MUI2.nsh"
+!include "FileFunc.nsh"
+
+;--------------------------------
+;Version Information (for installer file properties)
+
+;VIProductVersion "${version_number}" ;needs integer format: x.x.x.x
+VIProductVersion ${numeric_version}
+VIAddVersionKey "ProductName" "${productname_short}"
+VIAddVersionKey "Comments" "${productname_short} ist Freie Software"
+VIAddVersionKey "CompanyName" "Intevation GmbH"
+VIAddVersionKey "LegalTrademarks" ""
+VIAddVersionKey "LegalCopyright" "Copyright (C) 2016 by ETH Zürich"
+VIAddVersionKey "FileDescription" "Converter for EduApp export files"
+VIAddVersionKey "FileVersion" "${version_number}"
+
+;--------------------------------
+; General
+
+; Define Name, File and Installdir of Installer
+Name "${productname}"
+OutFile "${setupname}"
+InstallDir "$PROGRAMFILES\${productname}"
+BrandingText "ETH Zürich - ${productname}"
+
+;--------------------------------
+; Interface Settings
+
+; MUI Images / Icons
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "resources\header-install.bmp"
+!define MUI_WELCOMEFINISHPAGE_BITMAP "resources\wizard-install.bmp"
+!define MUI_ICON "resources\install.ico"
+
+!define MUI_HEADERIMAGE_UNBITMAP "resources\header-uninstall.bmp"
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP "resources\wizard-uninstall.bmp"
+!define MUI_UNICON "resources\uninstall.ico"
+
+!insertmacro MUI_RESERVEFILE_LANGDLL
+!define MUI_LANGDLL_REGISTRY_ROOT "SHCTX"
+!define MUI_LANGDLL_REGISTRY_KEY "Software\${productname_short}" 
+!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+;--------------------------------
+; Pages
+
+!define MUI_FINISHPAGE_TITLE  "$(T_finish_title)"
+!define MUI_FINISHPAGE_TEXT "$(T_finish_text)"
+
+; MUI welcome page text
+;!define MUI_WELCOMEPAGE_TITLE  "$(T_title)"
+;!define MUI_WELCOMEPAGE_TITLE_3LINES
+;!define MUI_WELCOMEPAGE_TEXT "$(T_description) $\r$\n$\r$\n$\r$\n$\r$\n"
+
+;!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_INSTFILES
+
+
+;--------------------------------
+;Supported Languages
+
+!insertmacro MUI_LANGUAGE "German"
+!insertmacro MUI_LANGUAGE "English"
+
+;--------------------------------
+; Install Functions
+
+Function ".onInit"
+  !insertmacro MUI_LANGDLL_DISPLAY
+  !insertmacro MULTIUSER_INIT
+FunctionEnd
+
+;--------------------------------
+; UnInstall Functions
+Function "un.onInit"
+!insertmacro MULTIUSER_UNINIT
+FunctionEnd
+
+Section ""
+; The actual installation
+  SetOutPath "$INSTDIR"
+  !include "filelist_in.nsh"
+; Store install directory
+  DetailPrint "$(T_registry)"
+  WriteRegStr SHCTX "Software\${productname_short}" "" $INSTDIR
+
+  ; Create uninstaller
+  WriteUninstaller "$INSTDIR\Uninstall.exe"
+
+; Register Uninstaller
+
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "DisplayName" "${productname}"
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "DisplayIcon" "$\"$INSTDIR\${productname_short}.exe$\""
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "DisplayVersion" "${version_number}"
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "Publisher" "Intevation GmbH"
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "URLInfoAbout" "${info_url}"
+  WriteRegDword SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "EstimatedSize" "${size}"
+
+
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                   "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
+  WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}" \
+                 "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
+
+  ; Set up File Extension .edu
+  # .edu
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU" "" "$(T_File_Type_edu_Name)"
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU" "FriendlyTypeName" "$(T_File_Type_edu_Name)"
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU" "PercievedType" "Document"
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU" "InfoTip" "$(T_File_Type_info_tip)"
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU\shell\open\command" "" "$\"$INSTDIR\${productname_short}.exe$\" $\"%1$\""
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU" "FriendlyAppName" "${productname}"
+  WriteRegStr SHCTX "Software\Classes\${productname_short}.AssocFile.EDU\DefaultIcon" "" "$INSTDIR\${productname_short}.exe"
+
+  WriteRegBin SHCTX "Software\Classes\.edu\OpenWithProgIDs" "${productname_short}.AssocFile.EDU" 0
+
+  WriteRegStr SHCTX "Software\RegisteredApplications" "${productname_short}" "SOFTWARE\${productname_short}\Capabilities"
+  WriteRegStr SHCTX "Software\${productname_short}" "" "${productname}"
+  WriteRegStr SHCTX "Software\${productname_short}" "FriendlyAppName" "${productname}"
+
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities" "ApplicationName" "${productname}"
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities" "ApplicationIcon" "$\"$INSTDIR\${productname_short}.exe$\",0"
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities" "ApplicationDescription" "$(T_description)"
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities" "FriendlyAppName" "${productname}"
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities\DefaultIcon" "" "$\"$INSTDIR\${productname_short}.exe$\",0"
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities\MimeAssociations" "application/edu-app" "${productname_short}.AssocFile.EDU"
+  WriteRegExpandStr SHCTX "Software\${productname_short}\Capabilities\shell\open\command" "" "$\"$INSTDIR\${productname_short}.exe$\" $\"%1$\""
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities\shell\open" "FriendlyAppName" "${productname}"
+  WriteRegStr SHCTX "Software\${productname_short}\Capabilities\FileAssociations" ".edu" "${productname_short}.AssocFile.EDU"
+
+
+  WriteRegStr SHCTX "SOFTWARE\Classes\Applications\${productname_short}.exe\SupportedTypes" ".edu" ""
+  WriteRegStr SHCTX "SOFTWARE\Classes\Applications\${productname_short}.exe\shell\open" "FriendlyAppName" "${productname}"
+
+  CreateShortCut "$SMPROGRAMS\${productname}.lnk" "$INSTDIR\${productname_short}.exe"
+
+  System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
+SectionEnd
+
+Section "Uninstall"
+  ExpandEnvStrings $0 %APPDATA%
+  Delete "$0\${productname_short}\${productname_short}.ini"
+  RmDir "$0\${productname_short}"
+  !include "filelist_un.nsh"
+  ExpandEnvStrings $0 %APPDATA%
+  Delete "$INSTDIR\Uninstall.exe"
+  RMDir "$INSTDIR"
+  DetailPrint "$(T_unregistry)"
+
+  DeleteRegKey SHCTX "Software\Classes\${productname_short}.AssocFile.EDU"
+  DeleteRegValue SHCTX "Software\Classes\.edu\OpenWithProgIDs" "${productname_short}.AssocFile.EDU"
+  DeleteRegValue SHCTX "Software\RegisteredApplications" "${productname_short}"
+  DeleteRegKey SHCTX "Software\${productname_short}"
+
+  DeleteRegKey SHCTX "SOFTWARE\Classes\Applications\${productname_short}.exe"
+
+; Remove uninstaller
+  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${productname_short}"
+
+  Delete "$SMPROGRAMS\${productname}.lnk"
+
+SectionEnd
+
+LangString T_description ${LANG_ENGLISH} "${productname} is a Software to convert EduApp-Exports into different formats."
+LangString T_description ${LANG_GERMAN}  "${productname} ist eine Anwendung um EduApp-Exporte in andere Formate zu konvertieren."
+LangString T_title ${LANG_ENGLISH} "Welcome to the installation of ${productname} ${version_number}$\r$\n$\r$\n$\r$\n$\r$\n"
+LangString T_title ${LANG_GERMAN} "Willkommen zur Installation von ${productname} ${version_number}$\r$\n$\r$\n$\r$\n$\r$\n"
+LangString T_finish_title ${LANG_ENGLISH} "Installation successful"
+LangString T_finish_title ${LANG_GERMAN} "Installation erfolgreich"
+LangString T_finish_text ${LANG_ENGLISH} "${productname} was successfully installed on your computer. $\r$\n$\r$\nClick 'Finish' to close the Install-Wizard."
+LangString T_finish_text ${LANG_GERMAN}  "${productname} wurde erfolgreich auf ihrem System installiert. $\r$\n$\r$\nKlicken Sie auf 'Fertig stellen', um den Installations-Assistenten zu schließen."
+LangString T_File_Type_info_tip ${LANG_ENGLISH} "An EduApp questionaire export."
+LangString T_File_Type_info_tip ${LANG_GERMAN} "Export eines EduApp Fragebogens."
+LangString T_File_Type_edu_Name ${LANG_GERMAN} "EduApp Export"
+LangString T_File_Type_edu_Name ${LANG_ENGLISH} "EduApp Export"
+LangString T_registry ${LANG_GERMAN} "Anwendung wird registiert"
+LangString T_registry ${LANG_ENGLISH} "Registering Application"
+LangString T_unregistry ${LANG_GERMAN} "Entferne Registry Einträge"
+LangString T_unregistry ${LANG_ENGLISH} "Unregistering Application"
Binary file packaging/resources/header-install.bmp has changed
Binary file packaging/resources/header-uninstall.bmp has changed
Binary file packaging/resources/install.ico has changed
Binary file packaging/resources/uninstall.ico has changed
Binary file packaging/resources/wizard-install.bmp has changed
Binary file packaging/resources/wizard-uninstall.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/win-createpackage.sh.in	Tue Jul 19 17:44:17 2016 +0200
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Copyright (C) 2016 by ETH Zürich
+# Software engineering by Intevation GmbH
+#
+# This file is Free Software under the GNU GPL (v>=2)
+# and comes with ABSOLUTELY NO WARRANTY!
+# See LICENSE.txt for details.
+
+echo "; This file is autogenerated." > @CMAKE_CURRENT_BINARY_DIR@/filelist_in.nsh
+echo "; This file is autogenerated." > @CMAKE_CURRENT_BINARY_DIR@/filelist_un.nsh
+
+echo File \"@CMAKE_BINARY_DIR@/src/@PROJECT_NAME@.exe\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_in.nsh
+echo Delete \"$INSTDIR\\@PROJECT_NAME@.exe\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_un.nsh
+echo File \"@CMAKE_SOURCE_DIR@/LICENSE.txt\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_in.nsh
+echo Delete \"$INSTDIR\\LICENSE.txt\" >> @CMAKE_CURRENT_BINARY_DIR@/filelist_un.nsh
+
+EST_SIZE=$(du -s @CMAKE_BINARY_DIR@/src/@PROJECT_NAME@.exe| cut -f 1)
+
+makensis \
+    -Dplugin_dir="@CMAKE_BINARY_DIR@" \
+    -Dversion_number=@PROJECT_VERSION@ \
+    -Dnumeric_version=@HG_REVISION_TAG@.0.0 \
+    -Dsetupname="@CMAKE_BINARY_DIR@/@PRETTY_NAME@-@PROJECT_VERSION@.exe" \
+    -Dproductname="@PRETTY_NAME@" \
+    -Dpath_sep="/" \
+    -Dinfo_url="https://wald.intevation.org/projects/clickerconvert/" \
+    -Dsize=$EST_SIZE \
+    -Dproductname_short="@PROJECT_NAME@" @CMAKE_SOURCE_DIR@/packaging/@PROJECT_NAME@.nsi
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)