Commit 63573210 authored by Dennis Nienhüser's avatar Dennis Nienhüser

Switch from NSIS to Inno Setup

(cherry picked from commit 021aaa11)
(cherry picked from commit 746438e1)
parent a0665d48
#define MyAppName "Marble"
#define MyAppVersion "1.13.90"
#define MyAppPublisher "KDE"
#define MyAppURL "https://marble.kde.org/"
#define MyAppExeName "marble-qt.exe"
#define MyArch "x64"
#define MyQtDir "C:\Qt\5.5\msvc2013_64"
#define MySrcDir "C:\marble\src"
#define MyBuildDir "C:\marble\export-64bit"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{E4E20D3E-4180-4747-A111-9A835A6FB1F0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
LicenseFile={#MySrcDir}\LICENSE.txt
OutputBaseFilename={#MyAppName}-setup_{#MyAppVersion}_{#MyArch}
SetupIconFile={#MySrcDir}\data\ico\marble.ico
Compression=lzma
SolidCompression=yes
ChangesAssociations=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "{#MyBuildDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyQtDir}\bin\icudt54.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\icuin54.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\icuuc54.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Gui.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5DBus.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Multimedia.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5MultimediaWidgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Network.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5OpenGL.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Positioning.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5PrintSupport.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Qml.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Quick.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Script.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Sensors.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Sql.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Svg.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5WebChannel.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5WebKit.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5WebKitWidgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\bin\Qt5Xml.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\platforms\qminimal.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\platforms\qwindows.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\imageformats\qjpeg.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\imageformats\qsvg.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\imageformats\qtiff.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\imageformats\qgif.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\bearer\qgenericbearer.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\bearer\qnativewifibearer.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\printsupport\windowsprintersupport.dll"; DestDir: "{app}\printsupport"; Flags: ignoreversion
Source: "{#MyQtDir}\plugins\sqldrivers\qsqlite.dll"; DestDir: "{app}\sqldrivers"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Tasks]
Name: kmlAssociation; Description: "Associate ""kml"" extension (KML files from e.g. Google Earth)"; GroupDescription: File extensions:
Name: kmzAssociation; Description: "Associate ""kmz"" extension (Compressed KML files from e.g. Google Earth)"; GroupDescription: File extensions:
Name: gpxAssociation; Description: "Associate ""gpx"" extension (GPS Exchange Format)"; GroupDescription: File extensions:
Name: jsonAssociation; Description: "Associate ""json"" extension (GeoJSON files)"; Flags: unchecked; GroupDescription: File extensions:
Name: geojsonAssociation; Description: "Associate ""geojson"" extension (GeoJSON files)"; GroupDescription: File extensions:
[Registry]
Root: HKCR; Subkey: ".kml"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Tasks: kmlAssociation
Root: HKCR; Subkey: ".kmz"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Tasks: kmzAssociation
Root: HKCR; Subkey: ".gpx"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Tasks: gpxAssociation
Root: HKCR; Subkey: ".json"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Tasks: jsonAssociation
Root: HKCR; Subkey: ".geojson"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""; Tasks: geojsonAssociation
Root: HKCR; Subkey: "{#MyAppName}"; ValueData: "Program {#MyAppName}"; Flags: uninsdeletekey; ValueType: string; ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}\DefaultIcon"; ValueData: "{app}\{#MyAppExeName},0"; ValueType: string; ValueName: ""
Root: HKCR; Subkey: "{#MyAppName}\shell\open\command"; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; ValueType: string; ValueName: ""
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
; basic script template for NSIS installers
;
; Written by Philip Chu
; Copyright (c) 2004-2005 Technicat, LLC
;
; This software is provided 'as-is', without any express or implied warranty.
; In no event will the authors be held liable for any damages arising from the use of this software.
; Permission is granted to anyone to use this software for any purpose,
; including commercial applications, and to alter it ; and redistribute
; it freely, subject to the following restrictions:
; 1. The origin of this software must not be misrepresented; you must not claim that
; you wrote the original software. If you use this software in a product, an
; acknowledgment in the product documentation would be appreciated but is not required.
; 2. Altered source versions must be plainly marked as such, and must not be
; misrepresented as being the original software.
; 3. This notice may not be removed or altered from any source distribution.
!include "FileAssociation.nsh"
!define architecture "x86" ; 32 or 64 bit build? x86 or x64
!define version "1.11.3" ; current Marble version
!define VCREDIST_DIR "C:\marble" ; where do visual studio redistributable packages lie?
!define setup "marble-setup_${version}_${architecture}.exe"
!define VCREDIST_FILE "vcredist_${architecture}.exe"
!define company "KDE"
!define prodname "Marble"
!define exec "marble-qt.exe"
; x64
; !define qtdir "C:\Qt\5.5\msvc2013_64"
; !define srcdir "C:\marble\export-64bit" ; where did you install Marble (CMAKE_INSTALL_PREFIX)?
; InstallDir "$PROGRAMFILES64\${prodname}"
; x86
!define qtdir "C:\Qt\5.5\msvc2013"
!define srcdir "C:\marble\export-32bit" ; where did you install Marble (CMAKE_INSTALL_PREFIX)?
InstallDir "$PROGRAMFILES\${prodname}"
; optional stuff
; license text file
!define licensefile LICENSE.txt
; icons must be Microsoft .ICO files
; !define icon "icon.ico"
; installer background screen
; !define screenimage background.bmp
; registry stuff
!define regkey "Software\${company}\${prodname}"
!define uninstkey "Software\Microsoft\Windows\CurrentVersion\Uninstall\${prodname}"
!define startmenu "$SMPROGRAMS\${prodname}"
!define uninstaller "uninstall.exe"
;--------------------------------
;XPStyle on
ShowInstDetails hide
ShowUninstDetails hide
Name "${prodname}"
Caption "${prodname}"
!ifdef icon
Icon "${icon}"
!endif
OutFile "${setup}"
SetDateSave on
SetDatablockOptimize on
CRCCheck on
SilentInstall normal
InstallDirRegKey HKLM "${regkey}" ""
!ifdef licensefile
LicenseText "License"
LicenseData "${srcdir}\data\${licensefile}"
!endif
; pages
; we keep it simple - leave out selectable installation types
!ifdef licensefile
Page license
!endif
; Page components
Page directory
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles
;--------------------------------
AutoCloseWindow false
;ShowInstDetails show
!ifdef screenimage
; set up background image
; uses BgImage plugin
Function .onGUIInit
; extract background BMP into temp plugin directory
InitPluginsDir
File /oname=$PLUGINSDIR\1.bmp "${screenimage}"
BgImage::SetBg /NOUNLOAD /FILLSCREEN $PLUGINSDIR\1.bmp
BgImage::Redraw /NOUNLOAD
FunctionEnd
Function .onGUIEnd
; Destroy must not have /NOUNLOAD so NSIS will be able to unload and delete BgImage before it exits
BgImage::Destroy
FunctionEnd
!endif
; beginning (invisible) section
Section
WriteRegStr HKLM "${regkey}" "Install_Dir" "$INSTDIR"
; write uninstall strings
WriteRegStr HKLM "${uninstkey}" "DisplayName" "${prodname} (remove only)"
WriteRegStr HKLM "${uninstkey}" "UninstallString" '"$INSTDIR\${uninstaller}"'
!ifdef filetype
WriteRegStr HKCR "${filetype}" "" "${prodname}"
!endif
WriteRegStr HKCR "${prodname}\Shell\open\command\" "" '"$INSTDIR\${exec} "%1"'
${registerExtension} "$INSTDIR\${exec}" ".kml" "Keyhole Markup Language (KML)"
${registerExtension} "$INSTDIR\${exec}" ".kmz" "Keyhole Markup Language (KML)"
${registerExtension} "$INSTDIR\${exec}" ".gpx" "GPS Exchange Format (GPX)"
!ifdef icon
WriteRegStr HKCR "${prodname}\DefaultIcon" "" "$INSTDIR\${icon}"
!endif
SetOutPath $INSTDIR
ReadRegDword $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}" "Version"
IntCmp $0 0 0 +3
File "${VCREDIST_DIR}\${VCREDIST_FILE}"
ExecWait '"$INSTDIR\${VCREDIST_FILE}" /q /norestart'
; package all files, recursively, preserving attributes
; assume files are in the correct places
File /a /r \
/x "*.nsi" \
/x "${setup}" \
/x "marble-touch.exe" \
/x "marble-mobile.exe" \
/x "RoutinoPlugin.dll" \
"${srcdir}\*.*"
File /a /r \
"${qtdir}\bin\ICUDT54.DLL" \
"${qtdir}\bin\ICUIN54.DLL" \
"${qtdir}\bin\ICUUC54.DLL" \
"${qtdir}\bin\QT5CORE.DLL" \
"${qtdir}\bin\QT5GUI.DLL" \
"${qtdir}\bin\QT5MULTIMEDIA.DLL" \
"${qtdir}\bin\QT5MULTIMEDIAWIDGETS.DLL" \
"${qtdir}\bin\QT5NETWORK.DLL" \
"${qtdir}\bin\QT5OPENGL.DLL" \
"${qtdir}\bin\QT5POSITIONING.DLL" \
"${qtdir}\bin\QT5PRINTSUPPORT.DLL" \
"${qtdir}\bin\QT5QML.DLL" \
"${qtdir}\bin\QT5QUICK.DLL" \
"${qtdir}\bin\QT5SCRIPT.DLL" \
"${qtdir}\bin\QT5SENSORS.DLL" \
"${qtdir}\bin\QT5SQL.DLL" \
"${qtdir}\bin\QT5SVG.DLL" \
"${qtdir}\bin\QT5WEBCHANNEL.DLL" \
"${qtdir}\bin\QT5WEBKIT.DLL" \
"${qtdir}\bin\QT5WEBKITWIDGETS.DLL" \
"${qtdir}\bin\QT5WIDGETS.DLL" \
"${qtdir}\bin\QT5XML.DLL"
SetOutPath $INSTDIR\platforms
File /a "${qtdir}\plugins\platforms\qminimal.dll" \
"${qtdir}\plugins\platforms\qwindows.dll"
SetOutPath $INSTDIR\imageformats
File /a "${qtdir}\plugins\imageformats\qjpeg.dll" \
"${qtdir}\plugins\imageformats\qsvg.dll" \
"${qtdir}\plugins\imageformats\qtiff.dll" \
"${qtdir}\plugins\imageformats\qgif.dll"
SetOutPath $INSTDIR\bearer
File /a "${qtdir}\plugins\bearer\qgenericbearer.dll" \
"${qtdir}\plugins\bearer\qnativewifibearer.dll"
SetOutPath $INSTDIR\printsupport
File /a "${qtdir}\plugins\printsupport\windowsprintersupport.dll"
SetOutPath $INSTDIR\sqldrivers
File /a "${qtdir}\plugins\sqldrivers\qsqlite.dll"
SetOutPath $INSTDIR
!ifdef licensefile
File /a "${srcdir}\data\${licensefile}"
!endif
!ifdef notefile
File /a "${srcdir}\${notefile}"
!endif
!ifdef icon
File /a "${srcdir}\${icon}"
!endif
; any application-specific files
!ifdef files
include "${files}"
!endif
WriteUninstaller "${uninstaller}"
SectionEnd
; create shortcuts
Section
CreateDirectory "${startmenu}"
SetOutPath $INSTDIR ; for working directory
CreateShortCut "${startmenu}\${prodname}.lnk" "$INSTDIR\${exec}"
CreateShortCut "${startmenu}\Uninstall.lnk" $INSTDIR\uninstall.exe"
!ifdef licensefile
CreateShortCut "${startmenu}\LICENSE.lnk "$INSTDIR\${licensefile}"
!endif
!ifdef notefile
CreateShortCut "${startmenu}\Release Notes.lnk "$INSTDIR\${notefile}"
!endif
!ifdef helpfile
CreateShortCut "${startmenu}\Documentation.lnk "$INSTDIR\${helpfile}"
!endif
!ifdef website
WriteINIStr "${startmenu}\web site.url" "InternetShortcut" "URL" ${website}
; CreateShortCut "${startmenu}\Web Site.lnk "${website}" "URL"
!endif
!ifdef notefile
ExecShell "open" "$INSTDIR\${notefile}"
!endif
SectionEnd
; Uninstaller
; All section names prefixed by "Un" will be in the uninstaller
UninstallText "This will uninstall ${prodname}."
!ifdef icon
UninstallIcon "${icon}"
!endif
Section "Uninstall"
DeleteRegKey HKLM "${uninstkey}"
DeleteRegKey HKLM "${regkey}"
${unregisterExtension} ".kml" "Keyhole Markup Language (KML)"
${unregisterExtension} ".kmz" "Keyhole Markup Language (KML)"
${unregisterExtension} ".gpx" "GPS Exchange Format (GPX)"
RMDir /r "${startmenu}"
RMDir /r "$INSTDIR"
; generated on runtime
DeleteRegKey HKCU "Software\${company}\Marble Desktop Globe"
RMDir /r "$%USERPROFILE%\.marble"
SectionEnd
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment