summaryrefslogtreecommitdiff
path: root/distribution/win32/nsis
diff options
context:
space:
mode:
Diffstat (limited to 'distribution/win32/nsis')
-rw-r--r--distribution/win32/nsis/CMakeLists.txt17
-rwxr-xr-xdistribution/win32/nsis/headerimage.bmpbin0 -> 25818 bytes
-rw-r--r--distribution/win32/nsis/install.nsh28
-rw-r--r--distribution/win32/nsis/uninstall.nsh30
4 files changed, 75 insertions, 0 deletions
diff --git a/distribution/win32/nsis/CMakeLists.txt b/distribution/win32/nsis/CMakeLists.txt
new file mode 100644
index 0000000..40d3990
--- /dev/null
+++ b/distribution/win32/nsis/CMakeLists.txt
@@ -0,0 +1,17 @@
+STRING(REPLACE "/" "\\\\" NATIVE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+
+SET(CPACK_GENERATOR "NSIS")
+SET(CPACK_PACKAGE_ICON "${NATIVE_CURRENT_SOURCE_DIR}\\\\headerimage.bmp")
+SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\xtrkcad.exe")
+SET(CPACK_NSIS_HELP_LINK "http://www.xtrkcad.org")
+
+SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
+ "; add part specific to XTrackCAD installation
+ !include \\\"${NATIVE_CURRENT_SOURCE_DIR}\\\\install.nsh\\\"")
+
+SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
+ "; add part specific to XTrackCAD uninstall
+ !include \\\"${NATIVE_CURRENT_SOURCE_DIR}\\\\uninstall.nsh\\\"")
+
+INCLUDE(CPack)
+
diff --git a/distribution/win32/nsis/headerimage.bmp b/distribution/win32/nsis/headerimage.bmp
new file mode 100755
index 0000000..0644c5a
--- /dev/null
+++ b/distribution/win32/nsis/headerimage.bmp
Binary files differ
diff --git a/distribution/win32/nsis/install.nsh b/distribution/win32/nsis/install.nsh
new file mode 100644
index 0000000..9f14625
--- /dev/null
+++ b/distribution/win32/nsis/install.nsh
@@ -0,0 +1,28 @@
+;
+; This file is included from the CMake generated NSIS file during install.
+;
+
+CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\XTrkCad Help.lnk" "$INSTDIR\share\xtrkcad\xtrkcad.chm" "" "" 0
+CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\XTrkCad ReadMe.lnk" "notepad.exe" "$INSTDIR\share\xtrkcad\ReadMe.txt"
+
+;
+; create file association
+;
+; back up old value of .xtc
+ !define Index "Line${__LINE__}"
+ ReadRegStr $1 HKCR ".xtc" ""
+ StrCmp $1 "" "${Index}-NoBackup"
+ StrCmp $1 "XTrackCAD.Design" "${Index}-NoBackup"
+ WriteRegStr HKCR ".xtc" "backup_val" $1
+ "${Index}-NoBackup:"
+
+; create the new association
+ WriteRegStr HKCR ".xtc" "" "XTrackCAD.Design"
+ WriteRegStr HKCR "XTrackCAD.Design" "" "XTrackCAD Layout Design"
+ WriteRegStr HKCR "XTrackCAD.Design\shell" "" "open"
+ WriteRegStr HKCR "XTrackCAD.Design\DefaultIcon" "" "$INSTDIR\bin\xtrkcad.exe,0"
+ WriteRegStr HKCR "XTrackCAD.Design\shell\open\command" "" '$INSTDIR\bin\xtrkcad.exe "%1"'
+
+ System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
+
+ !undef Index \ No newline at end of file
diff --git a/distribution/win32/nsis/uninstall.nsh b/distribution/win32/nsis/uninstall.nsh
new file mode 100644
index 0000000..b568e21
--- /dev/null
+++ b/distribution/win32/nsis/uninstall.nsh
@@ -0,0 +1,30 @@
+;
+; additional uninstaller instructions
+;
+
+; Remove file association
+ !define Index "Line${__LINE__}"
+ ReadRegStr $1 HKCR ".xtc" ""
+ StrCmp $1 "XTrackCAD.Design" 0 "${Index}-NoOwn" ; only do this if we own it
+ ReadRegStr $1 HKCR ".xtc" "backup_val"
+ StrCmp $1 "" 0 "${Index}-Restore" ; if backup="" then delete the whole key
+ DeleteRegKey HKCR ".xtc"
+ Goto "${Index}-NoOwn"
+ "${Index}-Restore:"
+ WriteRegStr HKCR ".xtc" "" $1
+ DeleteRegValue HKCR ".xtc" "backup_val"
+
+ DeleteRegKey HKCR "XTrackCAD.Design" ;Delete key with association settings
+
+ System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
+ "${Index}-NoOwn:"
+ !undef Index
+
+; Remove shortcuts, if any
+; SetShellVarContext all
+
+!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+
+Delete "$SMPROGRAMS\$MUI_TEMP\XTrkCad Help.lnk"
+Delete "$SMPROGRAMS\$MUI_TEMP\XTrkCad ReadMe.lnk"
+ \ No newline at end of file