# HG changeset patch # User John Donoghue # Date 1661947759 14400 # Node ID d5e6775fb3bc80181b9d75cf89622e749c0bed65 # Parent 1dde81c1f186a531250c2fb50725a070c0fecdb2 Add uninstall options to remove local packages and settings (Bug #62352) * src/default-octave.mk, src/release-octave.mk, src/stable-octave.mk: save api version to file * tools/makeinst-script.sh.in: add uninstall options, and on set, remove specified files from appdata/octave (grafted from 8fe292548edfeb8a82e64f0e2b5da1a65e35d835) diff -r 1dde81c1f186 -r d5e6775fb3bc src/default-octave.mk --- a/src/default-octave.mk Thu Aug 25 13:27:25 2022 -0400 +++ b/src/default-octave.mk Wed Aug 31 08:09:19 2022 -0400 @@ -236,4 +236,5 @@ # create a file with latest installed octave rev in it mkdir -p '$(TOP_BUILD_DIR)/octave' echo "$($(PKG)_VERSION)" > $(TOP_BUILD_DIR)/octave/octave-version + $(SED) -n 's,.*"api-v\([^"]*\)".*,\1,p' $(3)$(HOST_INCDIR)/octave-$($(PKG)_VERSION)/octave/version.h > $(TOP_BUILD_DIR)/octave/octave-api endef diff -r 1dde81c1f186 -r d5e6775fb3bc src/release-octave.mk --- a/src/release-octave.mk Thu Aug 25 13:27:25 2022 -0400 +++ b/src/release-octave.mk Wed Aug 31 08:09:19 2022 -0400 @@ -257,4 +257,5 @@ # create a file with latest installed octave rev in it mkdir -p '$(TOP_BUILD_DIR)/octave' echo "$($(PKG)_VERSION)" > $(TOP_BUILD_DIR)/octave/octave-version + $(SED) -n 's,.*"api-v\([^"]*\)".*,\1,p' $(3)$(HOST_INCDIR)/octave-$($(PKG)_VERSION)/octave/version.h > $(TOP_BUILD_DIR)/octave/octave-api endef diff -r 1dde81c1f186 -r d5e6775fb3bc src/stable-octave.mk --- a/src/stable-octave.mk Thu Aug 25 13:27:25 2022 -0400 +++ b/src/stable-octave.mk Wed Aug 31 08:09:19 2022 -0400 @@ -236,4 +236,5 @@ # create a file with latest installed octave rev in it mkdir -p '$(TOP_BUILD_DIR)/octave' echo "$($(PKG)_VERSION)" > $(TOP_BUILD_DIR)/octave/octave-version + $(SED) -n 's,.*"api-v\([^"]*\)".*,\1,p' $(3)$(HOST_INCDIR)/octave-$($(PKG)_VERSION)/octave/version.h > $(TOP_BUILD_DIR)/octave/octave-api endef diff -r 1dde81c1f186 -r d5e6775fb3bc tools/makeinst-script.sh.in --- a/tools/makeinst-script.sh.in Thu Aug 25 13:27:25 2022 -0400 +++ b/tools/makeinst-script.sh.in Wed Aug 31 08:09:19 2022 -0400 @@ -50,6 +50,7 @@ # extract version number OCTAVE_VERSION=`head -1 $MXEDIR/octave/octave-version` VERSION=`echo $OCTAVE_VERSION | sed -n 's,\([0-9\.]*\).*,\1,p'` +OCTAVE_API_VERSION=`head -1 $MXEDIR/octave/octave-api` if [ `echo $VERSION | grep -o '\.' | wc -l` -le 2 ]; then INSTALLER_VERSION="$VERSION.0" else @@ -171,6 +172,8 @@ ; uninstaller !insertmacro MUI_UNPAGE_CONFIRM +UninstPage custom un.octaveOptionsPage un.octaveOptionsLeave + !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH @@ -342,6 +345,41 @@ FunctionEnd ###################################################################### +; custom uninstall options page functions + +Var UninstallLocalPackages +Var UninstallLocalPackagesCtrl +Var UninstallUserSettings +Var UninstallUserSettingsCtrl + +Function un.octaveOptionsPage + + nsDialogs::Create 1018 + Pop \$0 + + \${If} \$0 == error + Abort + \${EndIf} + + \${NSD_CreateCheckBox} 0 0 100% 12u "Uninstall Local Packages" + Pop \$UninstallLocalPackagesCtrl + \${NSD_SetState} \$UninstallLocalPackagesCtrl \$UninstallLocalPackages + + \${NSD_CreateCheckBox} 0 20u 100% 12u "Remove user settings" + Pop \$UninstallUserSettingsCtrl + \${NSD_SetState} \$UninstallUserSettingsCtrl \$UninstallUserSettings + + !insertmacro MUI_HEADER_TEXT "Uninstall Options" "Choose additional options for uninstalling" + nsDialogs::Show + Pop \$0 +FunctionEnd + +Function un.octaveOptionsLeave + \${NSD_GetState} \$UninstallLocalPackagesCtrl \$UninstallLocalPackages + \${NSD_GetState} \$UninstallUserSettingsCtrl \$UninstallUserSettings +FunctionEnd + +###################################################################### Function un.onInit !insertmacro MULTIUSER_UNINIT @@ -385,6 +423,29 @@ \${EndIf} Pop \$R0 + + ; set default uninstall options + StrCpy \$UninstallUserSettings \${BST_UNCHECKED} + StrCpy \$UninstallLocalPackages \${BST_CHECKED} + + ; process command line options + \${GetParameters} \$R0 + ClearErrors + \${GetOptions} "\$R0" "/UNINSTALL_LOCALPACKAGES=" \$0 + IfErrors un_no_local_packages_opt + \${If} \$0 == 0 + StrCpy \$UninstallLocalPackages \${BST_UNCHECKED} + \${EndIf} +un_no_local_packages_opt: + ClearErrors + \${GetOptions} "\$R0" "/UNINSTALL_USERSETTINGS=" \$0 + IfErrors un_no_user_settings_opt + \${If} \$0 == 1 + StrCpy \$UninstallUserSettings \${BST_CHECKED} + \${EndIf} +un_no_user_settings_opt: + ClearErrors + FunctionEnd Function .onInit @@ -625,6 +686,24 @@ Section "Uninstall" + ; remove user uninstall stuff if options chosen + \${If} \$UninstallLocalPackages == 1 + \${If} \${FileExists} "\$APPDATA\\octave\\api-v$OCTAVE_API_VERSION" + RMDir /r "\$APPDATA\\octave\\api-v$OCTAVE_API_VERSION" + \${EndIf} + ClearErrors + \${EndIf} + + \${If} \$UninstallUserSettings == 1 + \${If} \${FileExists} "\$APPDATA\\octave" + Delete "\$APPDATA\\octave\\octave-gui.ini" + Delete "\$APPDATA\\octave\\octave-doc-bookmarks.xbel" + Delete "\$APPDATA\\octave\\history" + RMDir "\$APPDATA\\octave" + \${EndIf} + ClearErrors + \${EndIf} + ReadRegDWORD \$0 \${PRODUCT_UNINST_ROOT_KEY} "\$MultiUser.UninstallKey" "RegisteredFileType" IfErrors not_registered_file