Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/build-win-msys2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ package()

makensis \
-DAPP_ARCH="$PACKAGE_ARCH" \
-DAPP_VERSION="$PACKAGE_VERSION" \
-DINSTALLER_FILE="${OLD_PWD}/${PACKAGE_FILE_NAME}".exe \
"${PACKAGE_DIR}"/win-installer.nsi
rm "${PACKAGE_DIR}"/win-installer.nsi
Expand Down
93 changes: 83 additions & 10 deletions packages/win-installer.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
;==============================;

Unicode true
ManifestDPIAware true
Name "uChmViewer"
OutFile "${INSTALLER_FILE}"

Expand Down Expand Up @@ -105,12 +106,6 @@ Section "-Install"
SetOutPath "$INSTDIR\${PKG_ICONS_DIR}"
File /r "${APP_ICONS_DIR}\*.ico"

;Store installation folder
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\uChmViewer" "" "$INSTDIR"

;Create uninstaller
WriteUninstaller "$INSTDIR\uninst.exe"

!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
Expand All @@ -127,9 +122,6 @@ Section "Uninstall"
RMDir "$SMPROGRAMS\$R0"
Pop $R0

DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\uChmViewer"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\uChmViewer"

Delete "$INSTDIR\${PKG_ICONS_DIR}\*.ico"
Delete "$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe"
Delete "$INSTDIR\LICENSE.txt"
Expand Down Expand Up @@ -157,7 +149,7 @@ SectionEnd


;==============================;
; dependencies ;
; Dependencies ;
;==============================;

Section "-Install Dependencies"
Expand All @@ -171,3 +163,84 @@ Section "un.Install Dependencies"
RMDir /r "$INSTDIR\${PKG_BIN_DIR}"
RMDir "$INSTDIR"
SectionEnd


;==============================;
; File type association ;
;==============================;

!macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION APPNAME ICON COMMANDTEXT COMMAND
WriteRegStr HKCU "Software\Classes\.${EXT}" "" "${FILECLASS}"
WriteRegNone HKCU "Software\Classes\.${EXT}\OpenWithProgids" "${FILECLASS}"

WriteRegStr HKCU "Software\Classes\${FILECLASS}" "" `${DESCRIPTION}`
WriteRegStr HKCU "Software\Classes\${FILECLASS}\Application\" "ApplicationName" `${APPNAME}`
WriteRegStr HKCU "Software\Classes\${FILECLASS}\DefaultIcon" "" `${ICON}`
WriteRegStr HKCU "Software\Classes\${FILECLASS}\shell" "" "open"
WriteRegStr HKCU "Software\Classes\${FILECLASS}\shell\open" "" `${COMMANDTEXT}`
WriteRegStr HKCU "Software\Classes\${FILECLASS}\shell\open\command" "" `${COMMAND}`
!macroend

!macro APP_UNASSOCIATE EXT FILECLASS
DeleteRegValue HKCU "Software\Classes\.${EXT}\OpenWithProgids" "${FILECLASS}"
DeleteRegKey HKCU `Software\Classes\${FILECLASS}`
!macroend

; !defines for use with SHChangeNotify
!ifdef SHCNE_ASSOCCHANGED
!undef SHCNE_ASSOCCHANGED
!endif
!define SHCNE_ASSOCCHANGED 0x08000000
!ifdef SHCNF_FLUSH
!undef SHCNF_FLUSH
!endif
!define SHCNF_FLUSH 0x1000

!macro UPDATEFILEASSOC
; Using the system.dll plugin to call the SHChangeNotify Win32 API function so we can update the shell.
System::Call "shell32::SHChangeNotify(i,i,i,i) (${SHCNE_ASSOCCHANGED}, ${SHCNF_FLUSH}, 0, 0)"
!macroend


Section "-File type association"
!insertmacro APP_ASSOCIATE "chm" "uchmviewer.chm" "CHM File" "uChmViewer" \
"$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe,0" "Open with uchmviewer" "$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe $\"%1$\""
!insertmacro APP_ASSOCIATE "epub" "uchmviewer.epub" "EPUB File" "uChmViewer" \
"$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe,0" "Open with uchmviewer" "$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe $\"%1$\""
!insertmacro UPDATEFILEASSOC
SectionEnd

Section "un.File type association"
!insertmacro APP_UNASSOCIATE "chm" "uchmviewer.chm"
!insertmacro APP_UNASSOCIATE "epub" "uchmviewer.epub"
!insertmacro UPDATEFILEASSOC
SectionEnd


;==============================;
; Uninstall info ;
;==============================;

!define PRODUCT_DIR_REGKEY "Software\uChmViewer"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\uChmViewer"

Section "-Uninstall info"
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir" $INSTDIR
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "Version" "${APP_VERSION}"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe"

WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PKG_BIN_DIR}\uChmViewer.exe,0"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${APP_VERSION}"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninst.exe$\""
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "https://github.com/eBookProjects/uChmViewer"
WriteRegStr HKLM "${PRODUCT_UNINST_KEY}" "Publisher" "eBookProjects"
SectionEnd

Section "un.Uninstall info"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
DeleteRegKey HKLM "${PRODUCT_UNINST_KEY}"
SectionEnd