diff --git a/packages/build-win-msys2.sh b/packages/build-win-msys2.sh index 00be6fbd..125d08e9 100755 --- a/packages/build-win-msys2.sh +++ b/packages/build-win-msys2.sh @@ -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 diff --git a/packages/win-installer.nsi b/packages/win-installer.nsi index eae55980..4376d501 100644 --- a/packages/win-installer.nsi +++ b/packages/win-installer.nsi @@ -28,6 +28,7 @@ ;==============================; Unicode true + ManifestDPIAware true Name "uChmViewer" OutFile "${INSTALLER_FILE}" @@ -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" @@ -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" @@ -157,7 +149,7 @@ SectionEnd ;==============================; -; dependencies ; +; Dependencies ; ;==============================; Section "-Install Dependencies" @@ -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 +