我正在使用引導程序來包含單個MSI。如果我已經安裝了該軟件包,然後通過啓動軟件包EXE重新安裝,它可以檢測到該軟件包已安裝。但是,如果我重新構建解決方案,即使沒有單行代碼更改,捆綁軟件安裝EXE也不會檢測到該捆綁包已安裝,而是會安裝新版本(在程序和功能表中創建重複條目),但跳過安裝MSI。如果我啓動MSI,它將檢測到已經安裝了相同的軟件包。 這會引起很大的問題,因爲我每天都有構建安裝程序和應用程序的工作,所以無法檢測是否安裝了相同的版本。 燒傷配置簡單wix工具集引導程序無法檢測到重建後安裝的軟件包
<Bundle Name="ProductName" Version="1.0.0.0" Manufacturer="CompanyName"
UpgradeCode="28485414-29d0-4b3d-ba8c-33b5f993dfc3">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkSidebarLicense">
<bal:WixStandardBootstrapperApplication
LicenseUrl=""
LogoFile="..\Resources\Icon\small.png"
ShowVersion="yes"
SuppressOptionsUI="yes"
LogoSideFile="..\Resources\Icon\banner-side.bmp"
LocalizationFile="HyperlinkTheme.wxl"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" />
</BootstrapperApplicationRef>
<Chain>
<MsiPackage SourceFile="$(var.Installer.TargetPath)" Id="MsiEnUs" DisplayInternalUI="yes"/>
</Chain>
</Bundle>
而且MSI包被定義爲
<Product Id="*" Name="$(var.ProductDisplayName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.CompanyName)" UpgradeCode="c1b3c617-0af8-4df8-8dff-e893f7bbb30a">
<Package InstallerVersion="200" Compressed="yes" Platform="x64" InstallPrivileges="elevated" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
檢查日誌,我能找到的WixBundleInstalled爲0
謝謝你的回答。這解釋了burn *每次編譯時都會生成一個新的GUID。不過,我仍然有疑問:1.是否像MSI一樣提供燒錄的GUID? 2.使用MSI(我使用黑暗從EXE中提取MSI)進行安裝時,實際上無法安裝,但使用EXE時,會跳過MSI安裝。這是否有可能報告說根本沒有安裝MSI? – John
1.我相信這個GUID是無法控制的,除非你想重寫burn.exe,但我不確定它是如何生成的,我沒有做一些搜索,但找不到它。 2.如果您每次構建引導程序時沒有構建MSI,則每次安裝時都會包含完全相同的MSI,在這種情況下,不安裝它就是正確的行爲。您可以在%temp%中查看引導程序運行的日誌,並查看安裝的檢測,計劃和執行階段以及計劃在引導程序中定義的軟件包的計劃。 –
謝謝。我將使用內部編號來區分構建。每次都重建MSI,但我想它已經有GUID,所以它知道是同一產品/相同版本。 – John