Я создаю установщик новой версии своего программного обеспечения и планирую использовать его для обновления старой версии.При запуске установщика новой версии мне нужно получить номер версии старой версии программного обеспечения и поместить его в переменную для будущего использования.
Я попытался найти реестр в следующем коде, но ничего не былозахвачено.
<Bundle Name="$(var.ProductName)" Version="$(var.ProductVersion)"
Manufacturer="$(var.Manufacturer)"
IconSourceFile="A1-Logo-4.ico"
UpgradeCode="$(var.BundleUpgradeCode)">
<util:RegistrySearch Id="EXISTS_CURRENT_LANGUAGE_PACKAGE"
Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Value="BundleUpgradeCode"
Variable="EXISTS_CURRENT_LANGUAGE_PACKAGE"
Result="exists"/>
Я мог обнаружить, что старая версия моего программного обеспечения была установлена встроенной переменной wix [WixBundleInstalled], и мог видеть номер версии старого программного обеспечения в журналах программы установки.Журналы установки выглядят так, как показано ниже.
[0E64:0C48][2019-04-23T13:43:40]i001: Burn v3.11.1.2318, Windows v6.1 (Build 7601: Service Pack 1), path: C:\Users\XXX\AppData\Local\Temp\{XXXX-4C15-4659-BFBF-XXXX}\.cr\XXXX_v11.26.4.3.exe
[0E64:0C48][2019-04-23T13:43:40]i000: Initializing string variable 'INSTALL_BUTTON_TEXT' to value 'Install'
[0E64:0C48][2019-04-23T13:43:40]i009: Command Line: '-burn.clean.room=C:\installer\XXXX_v11.26.4.3.exe -burn.filehandle.attached=200 -burn.filehandle.self=208'
[0E64:0C48][2019-04-23T13:43:40]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\installer\XXXX_v11.26.4.3.exe'
[0E64:0C48][2019-04-23T13:43:40]i000: Setting string variable 'WixBundleOriginalSourceFolder' to value 'C:\installer\'
[0E64:0C48][2019-04-23T13:43:40]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\XXX\AppData\Local\Temp\XXXX_20190423134340.log'
[0E64:0C48][2019-04-23T13:43:40]i000: Setting string variable 'WixBundleName' to value 'XXXX'
[0E64:0C48][2019-04-23T13:43:40]i000: Registry value not found. Key = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\', Value = 'BundleUpgradeCode'
[0E64:0C48][2019-04-23T13:43:40]i000: Setting numeric variable 'EXISTS_CURRENT_LANGUAGE_PACKAGE' to value 0
[0E64:0C48][2019-04-23T13:43:40]i102: Detected related bundle: {XXXX-a9f2-420d-918b-XXXX}, type: Upgrade, scope: PerMachine, version: 11.26.4.2, operation: MajorUpgrade
[0E64:0C48][2019-04-23T13:43:40]i101: Detected package: InstallationMSI, state: Absent, cached: None
[0E64:0C48][2019-04-23T13:43:40]i104: Detected package: InstallationMSI, feature: ProductFeature, state: Absent
[0E64:0C48][2019-04-23T13:43:40]i052: Condition 'XXX OR XXXX OR XXXXX' evaluates to true.
[0E64:0C48][2019-04-23T13:43:40]i199: Detect complete, result: 0x0
Я выбираю способ получения номера версии установленного пакета.Или любое решение будет оценено.Есть идеи?