2016-09-21 94 views
1

我已經嘗試了在這個論壇和其他論壇上的主題的大部分答案,但我仍然有這個問題。如何確定一個Wix安裝程序將覆蓋(升級)舊版本,並不會降級

我想要更新捆綁版本,並且在生成並安裝安裝程序時,它應該升級以前的安裝,而不是在「程序和文件」中創建兩個記錄。

我在Product.wxs中使用以下代碼。

<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="miro" UpgradeCode="5ba49b49-25c4-47c0-82da-12bf5310af58"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

<MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="yes" IgnoreRemoveFailure="no" DowngradeErrorMessage="loc.NewerVersionInstalled" Schedule="afterInstallInitialize"/> 
    <MediaTemplate /> 

    <Feature Id="ProductFeature" Title="SetupProject1" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 
    </Feature> 

</Product> 

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="SetupProject1" /> 
     </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> 
     <Component Id="ProductComponent"> 
    <File Id="file_Exefile" Source="..\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe"> 

    </File> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

我甚至考慮基礎上,安裝過程和他們的ProductVersion屬性寫我自己的更新邏輯,但也有太多的情況下考慮。

你能告訴我這個Product.wxs有什麼問題,所以我可以修復它。

謝謝。

最好的問候, 葉夫根Dyulgerov

回答

0

你必須升級部分添加到您的產品部分。

<Upgrade Id='5ba49b49-25c4-47c0-82da-12bf5310af58'> 
    <UpgradeVersion OnlyDetect='no' Property='ISUPGRADE' 
         Minimum='0.0' IncludeMinimum='yes' 
         Maximum='1.0.0.0' IncludeMaximum='no' />  
</Upgrade> 

結帳Upgrades and Modularization on Firegiant

另外,維克斯CHM文件(在你的開始菜單)是非常有幫助的。

2

有幾件事情可能會阻止重大升級。您似乎擁有正確的MajorUpgrade邏輯,但是:

如果您在前三個字段中增加了產品版本,那麼這對主要升級更爲正常。

目前的UpgradeCode與舊產品的UpgradeCode不一樣,因此請檢查它是否正確。

如果以前產品的安裝範圍是perUser,則主要升級將不起作用,因爲Windows安裝程序不允許跨環境主要升級。

執行安裝時需要詳細記錄日誌並查看所有FindRelatedProducts事件。將會有多個,但請查看升級安裝中是否找到以前安裝的產品。

相關問題