From 1ed14674e89a1aaf9192e99ce1e18b3239a471d3 Mon Sep 17 00:00:00 2001 From: Marko Lindqvist <cazfi74@gmail.com> Date: Thu, 9 Feb 2023 07:05:50 +0200 Subject: [PATCH 33/33] Msys2: Distinguish registry keys and directories per MSYSTEM Namespace registry keys and install directories so they don't get overwritten by parallel installations. See osdn #46663 Signed-off-by: Marko Lindqvist <cazfi74@gmail.com> --- .../create-freeciv-gtk-qt-nsi.sh | 27 +++++++++++++------ .../create-freeciv-ruledit-nsi.sh | 25 ++++++++++++----- .../create-freeciv-sdl2-nsi.sh | 25 ++++++++++++----- 3 files changed, 55 insertions(+), 22 deletions(-) diff --git a/windows/installer_msys2/create-freeciv-gtk-qt-nsi.sh b/windows/installer_msys2/create-freeciv-gtk-qt-nsi.sh index 8b3814d47f..f767d80a0b 100644 --- a/windows/installer_msys2/create-freeciv-gtk-qt-nsi.sh +++ b/windows/installer_msys2/create-freeciv-gtk-qt-nsi.sh @@ -14,6 +14,13 @@ else MPEXE_ID="$EXE_ID" fi +ARCH_KEY_PART="$6" +if test "$6" != "win32" && test "$6" != "win64" ; then + ARCH_INST_PART="-${ARCH_KEY_PART}" +else + ARCH_INST_PART="" +fi + cat <<EOF ; Freeciv Windows installer script ; some parts adapted from Wesnoth installer script @@ -28,16 +35,19 @@ SetCompressor /SOLID lzma !define MPEXE_ID $MPEXE_ID !define GUI_NAME $5 !define WIN_ARCH $6 -!define APPID "\${APPNAME}-\${VERSION}-\${GUI_ID}" +!define ARCH_KEY_PART ${ARCH_KEY_PART} +!define ARCH_INST_PART ${ARCH_INST_PART} + +!define APPID "\${APPNAME}-\${VERSION}\${ARCH_INST_PART}-\${GUI_ID}" !define MULTIUSER_EXECUTIONLEVEL Highest !define MULTIUSER_MUI !define MULTIUSER_INSTALLMODE_COMMANDLINE -!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${GUI_ID}" +!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID}" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "" -!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${GUI_ID}" +!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID}" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "" -!define MULTIUSER_INSTALLMODE_INSTDIR "\${APPNAME}-\${VERSION}-\${GUI_ID}" +!define MULTIUSER_INSTALLMODE_INSTDIR "\${APPNAME}-\${VERSION}\${ARCH_INST_PART}-\${GUI_ID}" !include "MultiUser.nsh" !include "MUI2.nsh" @@ -63,9 +73,9 @@ Page custom DefaultLanguage DefaultLanguageLeave !insertmacro MULTIUSER_PAGE_INSTALLMODE !insertmacro MUI_PAGE_DIRECTORY -;Start Menu Folder Page Configuration +; Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" -!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${GUI_ID}" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !define MUI_STARTMENUPAGE_DEFAULTFOLDER "\$(^Name)" @@ -116,7 +126,7 @@ EOF cat <<EOF ; Write the installation path into the registry - WriteRegStr "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${GUI_ID} "" "\$INSTDIR" + WriteRegStr "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID} "" "\$INSTDIR" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "\$SMPROGRAMS\\\$STARTMENU_FOLDER" @@ -332,7 +342,8 @@ cat <<EOF ; remove registry keys DeleteRegKey "SHCTX" "Software\Microsoft\Windows\CurrentVersion\Uninstall\\\${APPID}" - DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${GUI_ID} + DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID} + DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART} DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION} DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME} SectionEnd diff --git a/windows/installer_msys2/create-freeciv-ruledit-nsi.sh b/windows/installer_msys2/create-freeciv-ruledit-nsi.sh index 4bd73bc5aa..4583a5ea34 100644 --- a/windows/installer_msys2/create-freeciv-ruledit-nsi.sh +++ b/windows/installer_msys2/create-freeciv-ruledit-nsi.sh @@ -2,6 +2,13 @@ # ./create-freeciv-ruledit.sh <Freeciv files dir> <Output dir> <version> <win32|win64|win> +ARCH_KEY_PART="$4" +if test "$4" != "win32" && test "$4" != "win64" ; then + ARCH_INST_PART="-${ARCH_KEY_PART}" +else + ARCH_INST_PART="" +fi + cat <<EOF ; Freeciv Windows installer script ; some parts adapted from Wesnoth installer script @@ -12,16 +19,19 @@ SetCompressor /SOLID lzma !define APPNAME "Freeciv-ruledit" !define VERSION $3 !define WIN_ARCH $4 -!define APPID "\${APPNAME}-\${VERSION}" +!define ARCH_KEY_PART ${ARCH_KEY_PART} +!define ARCH_INST_PART ${ARCH_INST_PART} + +!define APPID "\${APPNAME}-\${VERSION}\${ARCH_INST_PART}" !define MULTIUSER_EXECUTIONLEVEL Highest !define MULTIUSER_MUI !define MULTIUSER_INSTALLMODE_COMMANDLINE -!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}" +!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "" -!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}" +!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "" -!define MULTIUSER_INSTALLMODE_INSTDIR "\${APPNAME}-\${VERSION}" +!define MULTIUSER_INSTALLMODE_INSTDIR "\${APPNAME}-\${VERSION}\${ARCH_INST_PART}" !include "MultiUser.nsh" !include "MUI2.nsh" @@ -47,9 +57,9 @@ Page custom DefaultLanguage DefaultLanguageLeave !insertmacro MULTIUSER_PAGE_INSTALLMODE !insertmacro MUI_PAGE_DIRECTORY -;Start Menu Folder Page Configuration +; Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" -!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !define MUI_STARTMENUPAGE_DEFAULTFOLDER "\$(^Name)" @@ -103,7 +113,7 @@ EOF cat <<EOF ; Write the installation path into the registry - WriteRegStr "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION} "" "\$INSTDIR" + WriteRegStr "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART} "" "\$INSTDIR" !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "\$SMPROGRAMS\\\$STARTMENU_FOLDER" @@ -309,6 +319,7 @@ cat <<EOF ; remove registry keys DeleteRegKey "SHCTX" "Software\Microsoft\Windows\CurrentVersion\Uninstall\\\${APPID}" + DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART} DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION} DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME} SectionEnd diff --git a/windows/installer_msys2/create-freeciv-sdl2-nsi.sh b/windows/installer_msys2/create-freeciv-sdl2-nsi.sh index d9c9309a73..25c0b77f44 100644 --- a/windows/installer_msys2/create-freeciv-sdl2-nsi.sh +++ b/windows/installer_msys2/create-freeciv-sdl2-nsi.sh @@ -2,6 +2,13 @@ # ./create-freeciv-sdl2-nsi.sh <Freeciv files dir> <Output dir> <version> <win32|win64|win> +ARCH_KEY_PART="$4" +if test "$4" != "win32" && test "$4" != "win64" ; then + ARCH_INST_PART="-${ARCH_KEY_PART}" +else + ARCH_INST_PART="" +fi + cat <<EOF ; Freeciv Windows installer script ; some parts adapted from Wesnoth installer script @@ -14,16 +21,19 @@ SetCompressor /SOLID lzma !define GUI_ID sdl2 !define GUI_NAME SDL2 !define WIN_ARCH $4 -!define APPID "\${APPNAME}-\${VERSION}-\${GUI_ID}" +!define ARCH_KEY_PART ${ARCH_KEY_PART} +!define ARCH_INST_PART ${ARCH_INST_PART} + +!define APPID "\${APPNAME}-\${VERSION}\${ARCH_INST_PART}-\${GUI_ID}" !define MULTIUSER_EXECUTIONLEVEL Highest !define MULTIUSER_MUI !define MULTIUSER_INSTALLMODE_COMMANDLINE -!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${GUI_ID}" +!define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID}" !define MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME "" -!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${GUI_ID}" +!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID}" !define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "" -!define MULTIUSER_INSTALLMODE_INSTDIR "\${APPNAME}-\${VERSION}-\${GUI_ID}" +!define MULTIUSER_INSTALLMODE_INSTDIR "\${APPNAME}-\${VERSION}\${ARCH_INST_PART}-\${GUI_ID}" !include "MultiUser.nsh" !include "MUI2.nsh" @@ -49,9 +59,9 @@ Page custom DefaultLanguage DefaultLanguageLeave !insertmacro MULTIUSER_PAGE_INSTALLMODE !insertmacro MUI_PAGE_DIRECTORY -;Start Menu Folder Page Configuration +; Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" -!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${GUI_ID}" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !define MUI_STARTMENUPAGE_DEFAULTFOLDER "\$(^Name)" @@ -336,7 +346,8 @@ cat <<EOF ; remove registry keys DeleteRegKey "SHCTX" "Software\Microsoft\Windows\CurrentVersion\Uninstall\\\${APPID}" - DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${GUI_ID} + DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART}\\\${GUI_ID} + DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION}\\\${ARCH_KEY_PART} DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME}\\\${VERSION} DeleteRegKey /ifempty "SHCTX" SOFTWARE\\\${APPNAME} SectionEnd -- 2.39.1