mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Bug#55169: Installer does not preserve user's settings in custom mode
Fix some issues with WiX packaging, particularly major upgrade and change scenarios. * remember binary location and data location (for major upgrade) * use custom UI, which is WiX Mondo extended for major upgrade dialog (no feature selection screen shown on major upgrade, only upgrade confirmation). This is necessary to prevent changing installation path during upgrade (services are not reregistered, so they would have invalid binary path is it is changed) * Hide datafiles that are installed into ProgramFiles, show ones that are installed in ProgramData * Make MSI buildable with nmake * Fix autotools "make dist"
This commit is contained in:
parent
2aa7463b70
commit
dd9ff1276d
9 changed files with 196 additions and 36 deletions
|
@ -30,6 +30,7 @@ SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
|
|||
@libmysqld_dirs@ \
|
||||
mysql-test support-files sql-bench \
|
||||
win \
|
||||
packaging \
|
||||
cmake
|
||||
DIST_SUBDIRS = . include Docs zlib \
|
||||
cmd-line-utils sql-common scripts \
|
||||
|
@ -40,6 +41,7 @@ DIST_SUBDIRS = . include Docs zlib \
|
|||
mysql-test support-files sql-bench \
|
||||
win \
|
||||
cmake \
|
||||
packaging \
|
||||
BUILD
|
||||
DISTCLEANFILES = ac_available_languages_fragment
|
||||
|
||||
|
|
|
@ -3059,7 +3059,7 @@ AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl
|
|||
libmysqld/Makefile libmysqld/examples/Makefile dnl
|
||||
mysql-test/Makefile mysql-test/lib/My/SafeProcess/Makefile dnl
|
||||
sql-bench/Makefile include/mysql_version.h plugin/Makefile win/Makefile dnl
|
||||
cmake/Makefile
|
||||
cmake/Makefile packaging/Makefile
|
||||
)
|
||||
|
||||
AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h)
|
||||
|
|
14
packaging/Makefile.am
Normal file
14
packaging/Makefile.am
Normal file
|
@ -0,0 +1,14 @@
|
|||
EXTRA_DIST = \
|
||||
WiX/AdminBackground.jpg \
|
||||
WiX/AdminHeader.jpg \
|
||||
WiX/CMakeLists.txt \
|
||||
WiX/extra.wxs.in \
|
||||
WiX/CPackWixConfig.cmake \
|
||||
WiX/create_msi.cmake.in \
|
||||
WiX/custom_ui.wxs \
|
||||
WiX/MySQLServer.ico \
|
||||
WiX/mysql_server.wxs.in \
|
||||
WiX/ca/CMakeLists.txt \
|
||||
WiX/ca/CustomAction.cpp \
|
||||
WiX/ca/CustomAction.def \
|
||||
WiX/ca/CustomAction.rc
|
|
@ -41,11 +41,13 @@ FOREACH(dir mysql performance_schema)
|
|||
FILE(GLOB files ${CMAKE_BINARY_DIR}/sql/data/${dir}/*)
|
||||
SET(filelist)
|
||||
FOREACH(f ${files})
|
||||
IF(NOT f MATCHES ".rule")
|
||||
FILE(TO_NATIVE_PATH "${f}" file_native_path)
|
||||
GET_FILENAME_COMPONENT(file_name "${f}" NAME)
|
||||
SET(filelist
|
||||
"${filelist}
|
||||
<File Id='${file_name}' Source='${file_native_path}'/>")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
STRING(TOUPPER ${dir} DIR_UPPER)
|
||||
SET(DATADIR_${DIR_UPPER}_FILES "${filelist}")
|
||||
|
@ -56,15 +58,34 @@ FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR})
|
|||
FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR})
|
||||
FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR})
|
||||
|
||||
# WiX wants the license text as rtf; if there is no rtf license,
|
||||
# we create a fake one from the plain text COPYING file.
|
||||
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf")
|
||||
SET(COPYING_RTF "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf")
|
||||
ELSE()
|
||||
FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/../../COPYING" CONTENTS)
|
||||
STRING(REGEX REPLACE "\n" "\\\\par\n" CONTENTS "${CONTENTS}")
|
||||
STRING(REGEX REPLACE "\t" "\\\\tab" CONTENTS "${CONTENTS}")
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs15")
|
||||
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}")
|
||||
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "\n}\n")
|
||||
SET(COPYING_RTF "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf")
|
||||
ENDIF()
|
||||
GET_TARGET_PROPERTY(WIXCA_LOCATION wixca LOCATION)
|
||||
SET(CPACK_WIX_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake)
|
||||
SET(CPACK_WIX_INCLUDE "${CMAKE_CURRENT_BINARY_DIR}/extra.wxs;${CMAKE_CURRENT_SOURCE_DIR}/custom_ui.wxs")
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
|
||||
@ONLY)
|
||||
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(WixWin64 " Win64='yes'")
|
||||
ELSE()
|
||||
SET(WixWin64)
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/extra.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/extra.wxs)
|
||||
|
||||
|
@ -72,28 +93,11 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
|||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}")
|
||||
ENDIF()
|
||||
|
||||
# WiX wants the license text as rtf; if there is no rtf license,
|
||||
# we create a fake one from the plain text COPYING file.
|
||||
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf")
|
||||
MESSAGE("copying COPYING.rtf")
|
||||
FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf" CONTENTS)
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}")
|
||||
ELSE()
|
||||
MESSAGE("creating COPYING.rtf")
|
||||
FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/../../COPYING" CONTENTS)
|
||||
STRING(REGEX REPLACE "\n" "\\\\par\n" CONTENTS "${CONTENTS}")
|
||||
STRING(REGEX REPLACE "\t" "\\\\tab" CONTENTS "${CONTENTS}")
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs15")
|
||||
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}")
|
||||
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "\n}\n")
|
||||
ENDIF()
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
MSI
|
||||
COMMAND set VS_UNICODE_OUTPUT=
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake
|
||||
-DCPACK_WIX_INCLUDE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs
|
||||
${CONFIG_PARAM}
|
||||
-P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
|
||||
)
|
||||
|
@ -103,10 +107,8 @@ ADD_CUSTOM_TARGET(
|
|||
MSI_ESSENTIALS
|
||||
COMMAND set VS_UNICODE_OUTPUT=
|
||||
COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1
|
||||
-DCPACK_WIX_CONFIG=${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake
|
||||
-DCPACK_WIX_INCLUDE=${CMAKE_CURRENT_BINARY_DIR}/extra.wxs
|
||||
${CONFIG_PARAM}
|
||||
-P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
|
||||
)
|
||||
ADD_DEPENDENCIES(MSI wixca)
|
||||
ADD_DEPENDENCIES(MSI_ESSENTIALS wixca)
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
IF(ESSENTIALS)
|
||||
MESSAGE("Essentials!")
|
||||
SET(CPACK_COMPONENTS_USED "Server;Client;DataFiles")
|
||||
SET(CPACK_WIX_UI "WixUI_InstallDir")
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
@ -60,6 +59,7 @@ SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DESCRIPTION "Install MySQL Server")
|
|||
SET(CPACK_COMPONENT_DATAFILES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DISPLAY_NAME "Server data files")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DESCRIPTION "Server data files" )
|
||||
SET(CPACK_COMPONENT_DATAFILES_HIDDEN 1)
|
||||
|
||||
|
||||
#Feature "Devel"
|
||||
|
|
|
@ -10,6 +10,10 @@ SET(MINOR_VERSION "@MINOR_VERSION@")
|
|||
SET(PATCH "@PATCH@")
|
||||
SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@)
|
||||
SET(MANUFACTURER "@MANUFACTURER@")
|
||||
SET(WIXCA_LOCATION "@WIXCA_LOCATION@")
|
||||
SET(COPYING_RTF "@COPYING_RTF@")
|
||||
SET(CPACK_WIX_CONFIG "@CPACK_WIX_CONFIG@")
|
||||
SET(CPACK_WIX_INCLUDE "@CPACK_WIX_INCLUDE@")
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(Win64 " Win64='yes'")
|
||||
|
@ -30,7 +34,7 @@ IF(CPACK_WIX_CONFIG)
|
|||
ENDIF()
|
||||
|
||||
IF(NOT CPACK_WIX_UI)
|
||||
SET(CPACK_WIX_UI "WixUI_Mondo")
|
||||
SET(CPACK_WIX_UI "WixUI_Mondo_Custom")
|
||||
ENDIF()
|
||||
|
||||
SET(WIX_FEATURES)
|
||||
|
@ -144,15 +148,16 @@ FOREACH(f ${WIX_FEATURES})
|
|||
ENDFOREACH()
|
||||
|
||||
|
||||
IF(CMAKE_INSTALL_CONFIG_NAME)
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "${CMAKE_INSTALL_CONFIG_NAME}"
|
||||
WIXCA_LOCATION "${WIXCA_LOCATION}")
|
||||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
|
||||
IF(CMAKE_INSTALL_CONFIG_NAME)
|
||||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}")
|
||||
ENDIF()
|
||||
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
SET(ENV{DESTDIR} testinstall/${comp})
|
||||
SET(DIRS ${DIRS} testinstall/${comp})
|
||||
|
@ -262,9 +267,12 @@ FOREACH(d ${DIRS})
|
|||
SET(COMP_NAME ${d_name})
|
||||
TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs")
|
||||
FILE(APPEND ${abs}/${d_name}_component_group.wxs "</ComponentGroup>")
|
||||
IF(EXISTS ${d_name}.wxs)
|
||||
FILE(READ ${d_name}.wxs WIX_TMP)
|
||||
SET(CPACK_WIX_COMPONENTS "${CPACK_WIX_COMPONENTS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}.wxs)
|
||||
ENDIF()
|
||||
|
||||
FILE(READ ${d_name}_component_group.wxs WIX_TMP)
|
||||
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS "${CPACK_WIX_COMPONENT_GROUPS}\n${WIX_TMP}")
|
||||
|
|
81
packaging/WiX/custom_ui.wxs
Normal file
81
packaging/WiX/custom_ui.wxs
Normal file
|
@ -0,0 +1,81 @@
|
|||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
<WixVariable Id="WixUICostingPopupOptOut" Value="1" Overridable="yes" />
|
||||
<UI Id="WixUI_Mondo_Custom">
|
||||
<Dialog Id="UpgradeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="Upgrade">
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
|
||||
<Condition Action="default">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallTitle)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallText)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="UpgradeText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="no" NoPrefix="yes"
|
||||
Text="Click Upgrade to upgrade your installation from version [OLDERVERSION] to version [ProductVersion]. Click Cancel to exit the upgrade."/>
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.VerifyReadyDlgBannerBitmap)" />
|
||||
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
|
||||
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
|
||||
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
|
||||
|
||||
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
|
||||
<Property Id="WixUI_Mode" Value="Mondo" />
|
||||
|
||||
<DialogRef Id="ErrorDlg" />
|
||||
<DialogRef Id="FatalError" />
|
||||
<DialogRef Id="FilesInUse" />
|
||||
<DialogRef Id="MsiRMFilesInUse" />
|
||||
<DialogRef Id="PrepareDlg" />
|
||||
<DialogRef Id="ProgressDlg" />
|
||||
<DialogRef Id="ResumeDlg" />
|
||||
<DialogRef Id="UserExit" />
|
||||
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
|
||||
|
||||
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg" Order="1">NOT OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="UpgradeDlg" Order="2">OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg" Order="2">LicenseAccepted = "1"</Publish>
|
||||
|
||||
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CustomButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="3">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="4">WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="UpgradeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
|
||||
</UI>
|
||||
|
||||
<UIRef Id="WixUI_Common" />
|
||||
</Include>
|
|
@ -48,7 +48,11 @@
|
|||
</Directory>
|
||||
</DirectoryRef>
|
||||
|
||||
<Feature Id="UserEditableDatafiles" Level='1' Display='hidden' ConfigurableDirectory="DATADIR">
|
||||
<Feature Id='UserEditableDataFiles'
|
||||
Title='Server data files'
|
||||
Description='Server data files'
|
||||
ConfigurableDirectory='DATADIR'
|
||||
Level='1'>
|
||||
<ComponentRef Id="component.datadir"/>
|
||||
<ComponentRef Id="component.datadir.mysql"/>
|
||||
<ComponentRef Id="component.datadir.performance_schema"/>
|
||||
|
|
|
@ -26,7 +26,9 @@
|
|||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.0"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH@"
|
||||
Property="OLDERVERSIONBEINGUPGRADED" />
|
||||
Property="OLDERVERSIONBEINGUPGRADED"
|
||||
MigrateFeatures="yes"
|
||||
/>
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH@"
|
||||
OnlyDetect="yes"
|
||||
|
@ -39,6 +41,53 @@
|
|||
<RemoveExistingProducts After="InstallInitialize"/>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Save/restore install location -->
|
||||
<CustomAction Id="SaveTargetDir" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="SaveTargetDir" After="InstallValidate">
|
||||
NOT
|
||||
Installed
|
||||
</Custom>
|
||||
</InstallExecuteSequence>
|
||||
<InstallUISequence>
|
||||
<!-- App search is what does FindInstallLocation, and it is dependent on FindRelatedProducts -->
|
||||
<AppSearch After="FindRelatedProducts"/>
|
||||
</InstallUISequence>
|
||||
|
||||
<!-- Find previous installation -->
|
||||
<Property Id="INSTALLDIR">
|
||||
<RegistrySearch Id="FindInstallLocation"
|
||||
Root="HKLM"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="InstallLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<Property Id="DATADIR">
|
||||
<RegistrySearch Id="FindDataDir"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="DataLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<Property Id="INSTALLDIR2">
|
||||
<RegistrySearch Id="FindInstallLocation2"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="Location"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<CustomAction Id="SetInstallDir2" Property="INSTALLDIR" Value="[INSTALLDIR2]" />
|
||||
<InstallUISequence>
|
||||
<Custom Action="SetInstallDir2" After="AppSearch">INSTALLDIR2</Custom>
|
||||
</InstallUISequence>
|
||||
|
||||
|
||||
<!-- UI -->
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"></Property>
|
||||
|
@ -60,10 +109,10 @@
|
|||
<!-- License -->
|
||||
<WixVariable
|
||||
Id="WixUILicenseRtf"
|
||||
Value="@CMAKE_CURRENT_BINARY_DIR@/COPYING.rtf"/>
|
||||
Value="@COPYING_RTF@"/>
|
||||
|
||||
<!-- How to remove the service on uninstall -->
|
||||
<Binary Id='wixca.dll' SourceFile='@CMAKE_CURRENT_BINARY_DIR@/ca/RelWithDebInfo/wixca.dll' />
|
||||
<Binary Id='wixca.dll' SourceFile='@WIXCA_LOCATION@' />
|
||||
<CustomAction Id="UnregisterProperty" Property="UnregisterService" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterPropertySilent" Property="UnregisterServiceSilently" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterService"
|
||||
|
@ -81,8 +130,8 @@
|
|||
<InstallExecuteSequence>
|
||||
<Custom Action="UnregisterProperty" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE</Custom>
|
||||
<Custom Action="UnregisterPropertySilent" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE</Custom>
|
||||
<Custom Action="UnregisterService" After="UnregisterProperty">Installed And Not UPGRADINGPRODUCTCODE And UILevel>2</Custom>
|
||||
<Custom Action="UnregisterServiceSilently" After="UnregisterPropertySilent">Installed And Not UPGRADINGPRODUCTCODE And UILevel<=2</Custom>
|
||||
<Custom Action="UnregisterService" After="UnregisterProperty">Installed And Not UPGRADINGPRODUCTCODE And UILevel>4</Custom>
|
||||
<Custom Action="UnregisterServiceSilently" After="UnregisterPropertySilent">Installed And Not UPGRADINGPRODUCTCODE And UILevel<=4</Custom>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Installation root-->
|
||||
|
|
Loading…
Reference in a new issue