我有一套WiX腳本,用於允許我爲補丁創建補丁。我有充分的安裝以下版本號:WiX:從WiX 3.0升級到WiX後修補補丁不再有效3.6-8
11.00.38.01 11.00.38.02 11.00.38.03
我會那麼這些數字之間創建補丁,即
11.00.38.01-11.00。 38.02 11.00.38.02-11.00.38.03
使用這些腳本WiX的3.0,我將能夠運行
11.00.38.01
,然後應用
11.00.38.01-11.00.38.02和11.00.38.02-11.00.38.03補丁,
這將使安裝多達
11.00.38.03
升級到WiX 3.6及更高版本3.7和3.8後,此功能不再有效。
我可以安裝一個構建並將一個修補程序應用於該構建,但無法安裝構建,修補安裝,然後應用其他修補程序。
如果我試圖做到這一點,我得到以下錯誤:
The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch.
我的貼片模板看起來是這樣的:
該產品的.wxs腳本<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch
AllowRemoval="no"
Manufacturer="Acme"
MoreInfoURL="http://www.acme.com/"
DisplayName="$(var.ProductName) $(var.ProductVersion) Upgrade"
Description="Minor Upgrade"
Classification="Update"
>
<Media Id="5000" Cabinet="RTM.cab">
<PatchBaseline Id="RTM"/>
</Media>
<PatchFamilyRef Id="$(var.ProductShortName)UpgradeFamily"/>
</Patch>
<Fragment>
<PatchFamily Id='$(var.ProductShortName)UpgradeFamily' Version='1.0.0.0' Supersede='yes'>
<ComponentGroupRef Id='PatchComponents' />
</PatchFamily>
</Fragment>
</Wix>
部分看起來是這樣的:
<Product Name='Acme Server'
Id='6DE00366-36D8-4BA0-B911-8FBD7490C472'
UpgradeCode='0FDE99AC-D910-46CF-814D-D851B81D3816'
Language='1033'
Codepage='1252'
Version='$(var.ProductVersion)'
Manufacturer='Acme'>
<Package
Id='*'
Keywords='Installer'
Description="Acme Server"
Comments='Acme Server is a registered trademark of Acme.'
Manufacturer='Acme'
InstallerVersion='200'
Languages='0'
Compressed='yes'
SummaryCodepage='1252'
Platform='x86'
/>
<Upgrade Id='0FDE99AC-D910-46CF-814D-D851B81D3816'>
<UpgradeVersion OnlyDetect='yes' Property='SELFFOUND'
Minimum='$(var.ProductVersion)' IncludeMinimum='yes' Maximum='$(var.ProductVersion)' IncludeMaximum='yes' />
<UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND'
Minimum='$(var.ProductVersion)' IncludeMinimum='no' />
</Upgrade>
</Product>
有趣的是,WiX 3.0補丁日誌包含以下行:
PATCH SEQUENCER: verifying the applicability of minor upgrade patch c:\Install\10.10.11.01-10.10.11.02\AcmeServer.msp against product code: {6DE00366-36D8-4BA0-B911-8FBD7490C472}, product version: 10.10.1101, product language 1033 and upgrade code: {0FDE99AC-D910-46CF-814D-D851B81D3816}
而維克斯3.6或更高版本的補丁日誌包含這一行:
PATCH SEQUENCER: verifying the applicability of QFE patch c:\11.00.38.01-11.00.38.02\AcmeServer.msp against product code: {6DE00366-36D8-4BA0-B911-8FBD7490C472}, product version: 11.00.3801, product language 1033 and upgrade code: {0FDE99AC-D910-46CF-814D-D851B81D3816}
注意,3.0日誌說:「小升級補丁」,而3.6+日誌說:「QFE補丁」。我不知道這是否與此有關。
我在這裏做錯了什麼?爲什麼生成的修補程序的行爲會發生變化?當然,在過去的幾年裏對WiX腳本進行了一些微調,但據我所知,其中沒有一個與修補過程有關。似乎主要變化是由於從WiX 3.0切換到更新版本。
編輯:
我已經驗證了這種變化正好發生在我切換從維克斯3.0至3.6維克斯的時間。
我也注意到,如果我使用WiX 3。0生成的補丁,版本號被在程序更新&特點當貼劑被施加到完全安裝或另一補丁而用維克斯3.6 + - 生成補丁,當貼劑被施加到版本號保持不變完整的安裝。
我想知道如果任何違約已經改變了命令行工具(火炬,煙火等)?
我的猜測是,它是與PackageCodes。 QFE和次要升級之間的區別在於PackageCode是否發生了變化。另一個線索是,已安裝產品的身份(產品代碼+ PackageCode)以及斑片有一個目標packagecode它不能在系統上找到。所以一些補丁組合已經改變了產品的包裝碼,有些還沒有。 – PhilDW
使用WiX 3.0生成的修補程序將更新程序和特徵中的版本號。如果由WiX 3.6+生成,則版本號不會更新(儘管在這兩種情況下都會更新文件)。 –