Use CMake for Windows installer branding

As a side effect, fixes an issue where the installer wrote the incorrect version to the registry.
This commit is contained in:
Kenneth Chew 2022-05-29 17:37:45 -04:00
parent d7fad4bd04
commit 8731c86d0d
No known key found for this signature in database
GPG Key ID: F17D3E14A07739DA
4 changed files with 28 additions and 22 deletions

View File

@ -206,7 +206,7 @@ jobs:
shell: msys2 {0}
run: |
cd ${{ env.INSTALL_DIR }}
makensis -NOCD "-DVERSION=${{ env.VERSION }}" "-DMUI_ICON=${{ github.workspace }}/program_info/polymc.ico" "-XOutFile ${{ github.workspace }}/PolyMC-Setup.exe" "${{ github.workspace }}/program_info/win_install.nsi"
makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi"
- name: Package (Linux)
if: runner.os == 'Linux' && matrix.appimage != true

View File

@ -260,6 +260,8 @@ elseif(WIN32)
# install as bundle
set(INSTALL_BUNDLE "full")
configure_file(program_info/win_install.nsi.in program_info/win_install.nsi @ONLY)
else()
message(FATAL_ERROR "Platform not supported")
endif()

View File

@ -14,6 +14,7 @@ set(Launcher_MetaInfo "program_info/org.polymc.PolyMC.metainfo.xml" PARENT_SCOPE
set(Launcher_ManPage "program_info/polymc.6.txt" PARENT_SCOPE)
set(Launcher_SVG "program_info/org.polymc.PolyMC.svg" PARENT_SCOPE)
set(Launcher_Branding_ICNS "program_info/polymc.icns" PARENT_SCOPE)
set(Launcher_Branding_ICO "program_info/polymc.ico" PARENT_SCOPE)
set(Launcher_Branding_WindowsRC "program_info/polymc.rc" PARENT_SCOPE)
set(Launcher_Branding_LogoQRC "program_info/polymc.qrc" PARENT_SCOPE)

View File

@ -4,10 +4,13 @@
Unicode true
Name "PolyMC"
InstallDir "$LOCALAPPDATA\Programs\PolyMC"
InstallDirRegKey HKCU "Software\PolyMC" "InstallDir"
Name "@Launcher_Name@"
InstallDir "$LOCALAPPDATA\Programs\@Launcher_Name@"
InstallDirRegKey HKCU "Software\@Launcher_Name@" "InstallDir"
RequestExecutionLevel user
OutFile "../@Launcher_Name@-Setup.exe"
!define MUI_ICON "../@Launcher_Branding_ICO@"
;--------------------------------
@ -18,7 +21,7 @@ RequestExecutionLevel user
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$InstDir\polymc.exe"
!define MUI_FINISHPAGE_RUN "$InstDir\@Launcher_APP_BINARY_NAME@.exe"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
@ -99,15 +102,15 @@ RequestExecutionLevel user
;--------------------------------
; The stuff to install
Section "PolyMC"
Section "@Launcher_Name@"
SectionIn RO
nsExec::Exec /TIMEOUT=2000 'TaskKill /IM polymc.exe /F'
nsExec::Exec /TIMEOUT=2000 'TaskKill /IM @Launcher_APP_BINARY_NAME@.exe /F'
SetOutPath $INSTDIR
File "polymc.exe"
File "@Launcher_APP_BINARY_NAME@.exe"
File "qt.conf"
File *.dll
File /r "iconengines"
@ -117,20 +120,20 @@ Section "PolyMC"
File /r "styles"
; Write the installation path into the registry
WriteRegStr HKCU Software\PolyMC "InstallDir" "$INSTDIR"
WriteRegStr HKCU Software\@Launcher_Name@ "InstallDir" "$INSTDIR"
; Write the uninstall keys for Windows
${GetParameters} $R0
${GetOptions} $R0 "/NoUninstaller" $R1
${If} ${Errors}
!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\PolyMC"
WriteRegStr HKCU "${UNINST_KEY}" "DisplayName" "PolyMC"
WriteRegStr HKCU "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\polymc.exe"
!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\@Launcher_Name@"
WriteRegStr HKCU "${UNINST_KEY}" "DisplayName" "@Launcher_Name@"
WriteRegStr HKCU "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe"
WriteRegStr HKCU "${UNINST_KEY}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKCU "${UNINST_KEY}" "QuietUninstallString" '"$INSTDIR\uninstall.exe" /S'
WriteRegStr HKCU "${UNINST_KEY}" "InstallLocation" "$INSTDIR"
WriteRegStr HKCU "${UNINST_KEY}" "Publisher" "PolyMC Contributors"
WriteRegStr HKCU "${UNINST_KEY}" "ProductVersion" "${VERSION}"
WriteRegStr HKCU "${UNINST_KEY}" "Publisher" "@Launcher_Name@ Contributors"
WriteRegStr HKCU "${UNINST_KEY}" "ProductVersion" "@Launcher_RELEASE_VERSION_NAME@"
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
WriteRegDWORD HKCU "${UNINST_KEY}" "EstimatedSize" "$0"
@ -143,13 +146,13 @@ SectionEnd
Section "Start Menu Shortcut" SM_SHORTCUTS
CreateShortcut "$SMPROGRAMS\PolyMC.lnk" "$INSTDIR\polymc.exe" "" "$INSTDIR\polymc.exe" 0
CreateShortcut "$SMPROGRAMS\@Launcher_Name@.lnk" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" "" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" 0
SectionEnd
Section "Desktop Shortcut" DESKTOP_SHORTCUTS
CreateShortcut "$DESKTOP\PolyMC.lnk" "$INSTDIR\polymc.exe" "" "$INSTDIR\polymc.exe" 0
CreateShortcut "$DESKTOP\@Launcher_Name@.lnk" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" "" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" 0
SectionEnd
@ -159,12 +162,12 @@ SectionEnd
Section "Uninstall"
nsExec::Exec /TIMEOUT=2000 'TaskKill /IM polymc.exe /F'
nsExec::Exec /TIMEOUT=2000 'TaskKill /IM @Launcher_APP_BINARY_NAME@.exe /F'
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\PolyMC"
DeleteRegKey HKCU SOFTWARE\PolyMC
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\@Launcher_Name@"
DeleteRegKey HKCU SOFTWARE\@Launcher_Name@
Delete $INSTDIR\polymc.exe
Delete $INSTDIR\@Launcher_APP_BINARY_NAME@.exe
Delete $INSTDIR\uninstall.exe
Delete $INSTDIR\portable.txt
@ -220,8 +223,8 @@ Section "Uninstall"
RMDir /r $INSTDIR\platforms
RMDir /r $INSTDIR\styles
Delete "$SMPROGRAMS\PolyMC.lnk"
Delete "$DESKTOP\PolyMC.lnk"
Delete "$SMPROGRAMS\@Launcher_Name@.lnk"
Delete "$DESKTOP\@Launcher_Name@.lnk"
RMDir "$INSTDIR"