2014-05-12 43 views
6

所以我有一個非常簡單的刻錄安裝程序,主要包括.net升級或偶爾爲我們的應用程序需要與之通話的硬件驅動程序包。Wix Burn,我該如何降級?

MSI的我們創建支持升級或降級。

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"  
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 
    <Bundle Name="My App Name" Manufacturer="Company Name" Version="!(bind.packageVersion.MyAPP_MSI)" 
      IconSourceFile="MyIcon.ico" DisableModify="yes" DisableRemove="yes" 
      UpgradeCode="{15E598EF-89CE-470B-8CEF-E32C8983DA33}" > 
     <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" > 
      <bal:WixStandardBootstrapperApplication 
       LogoFile="$(var.CoreComponents.TargetDir)InstallerGraphics\Bootstrapper_Logo.png" 
       LicenseFile="$(var.CoreComponents.TargetDir)AppRoot\App License.rtf" 
       SuppressOptionsUI="yes" /> 
     </BootstrapperApplicationRef> 

     <Chain> 
      <PackageGroupRef Id="NetFx451Web"/> 

      <MsiPackage DisplayName="My full Application Name" Id="MyAPP_MSI" SourceFile="$(var.Installer_MyAppMSI_TargetPath)" 
         DisplayInternalUI="yes" ForcePerMachine="yes" Visible="yes" /> 

     <MsiPackage DisplayName="My Hardware Driver" Id="Installer_MSI_Driver" SourceFile="$(var.Installer_Driver.TargetPath)" 
        DisplayInternalUI="yes" ForcePerMachine="yes" Visible="yes" /> 

     </Chain> 
    </Bundle> 
</Wix> 

我們通常beta版本,當用戶想要從公測回到降級到我們的穩定版本,他們不能簡單地執行舊的EXE安裝程序。他們必須從添加/刪除程序中刪除以前的軟件包到安裝程序舊的刻錄EXE。

這不是基於MSI的安裝問題。我們如何回到這個功能?

登錄

[0CB8:067C][2014-06-23T11:10:04]i001: Burn v3.8.1128.0, Windows v6.1(Build 7601: Service Pack 1), path:\\iop-filesvr\IOP\Builds\Main\8.1.240\IO Practiceware Client Setup.exe, cmdline: '-burn.unelevated BurnPipe.{197B8193-6EFC-4ED0-AF90-DE7205F13E65} {CD23A8AB-520B-4F5D-BCB9-98998C5A1EC0} 2216' 

[0CB8:067C][2014-06-23T11:10:04]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\jeff\AppData\Local\Temp\IO_Practiceware_Client_8.1.240.0_20140623111004.log' 

[0CB8:067C][2014-06-23T11:10:04]i000: Setting string variable'WixBundleOriginalSource' to value '\\iop-filesvr\IOP\Builds\Main\8.1.240\IO Practiceware ClientSetup.exe' 

[0CB8:067C][2014-06-23T11:10:04]i000: Setting string variable 'WixBundleName' to value 'IO Practiceware Client 8.1.240.0' 

[0CB8:067C][2014-06-23T11:10:05]i100: Detect begin, 2 packages 

[0CB8:067C][2014-06-23T11:10:05]i000: Setting string variable 'PrerequisitesVersion' to value '1.0.0.0' 

[0CB8:067C][2014-06-23T11:10:05]i102: Detected related bundle: {8d398d25-606f-419a-9b29-e3434aeb2485}, type: Upgrade, scope: PerUser, version: 8.1.241.0, operation: Downgrade 

[0CB8:067C][2014-06-23T11:10:05]i103: Detected related package: {7EA877FF-CE7A-49CE-8F76-D5A11EA7DD7A}, scope: PerMachine, version: 1.0.0.0, language: 0 operation: MajorUpgrade 

[0CB8:067C][2014-06-23T11:10:05]i103: Detected related package: {8E8A7689-FB1C-4FE5-AF7C-95D499A342DE}, scope: PerUser, version: 8.1.241.0, language: 0 operation: MajorUpgrade 

[0CB8:067C][2014-06-23T11:10:05]i101: Detected package: PrerequisitesMsi, state: Absent, cached: None 

[0CB8:067C][2014-06-23T11:10:05]i101: Detected package: ClientMsi, state: Absent, cached: None 

[0CB8:067C][2014-06-23T11:10:05]i199:Detect complete, result: 0x0 

[0CB8:076C][2014-06-23T11:10:16]i000: Setting numeric variable 'EulaAcceptCheckbox' to value 0 

[0CB8:076C][2014-06-23T11:10:16]e000: Error 0x80070666: Cannot install a product when a newer version is installed. 
+0

那麼運行舊的刻錄exe安裝程序時發生了什麼?理想情況下,在刻錄級別和MSI級別刻錄句柄升級。所以如果MSI被設置爲降級,它應該會發生。如果沒有發生,你能否粘貼刻錄安裝/卸載日誌? – Isaiah4110

+0

你說「從測試版降級到我們的穩定版本」。我們將穩定版本視爲Beta版本的升級版本。例如測試版1.2.3.1234被用戶視爲「1.2.3.1234」。以下版本是1.2.3.1235,但被用戶看作是「1.2」。 Wix使用的版本號可能與用戶用戶看到的版本號不同。例如信息版本。 –

回答

0

嘗試在你的product.wxs文件中添加<Property Id="REINSTALLMODE" Value="amus" />。 REINSTALLMODE屬性是一組定義具有不同/相同版本的新安裝的行爲的設置。有關更多詳細信息,您可以檢查REINSTALLMODE property作爲參考。

+1

試圖添加此屬性,但它仍然不會讓我降級版本。看到我的答案,爲我工作的東西。 – Contango

+0

+1。絕對看起來更好的解決方案。但是這一個爲我工作,因爲我啓用MSI重寫所有註冊表並通過設置此屬性再次複製文件。會嘗試你提供的解決方案。如果它適合我​​,我會添加評論。 – Durgesh

0

將beta版視爲穩定版(RC版或市場版)版本。文件/程序集版本總是向上移動,因此安裝是升級。

以釋放序列:

  • 1.2.3.4567 Beta版
  • 1.2.3.4568市場發佈
  • 1.2.4.4569 Beta版接下來

定義,客戶根據看到的版本如果市場(穩定)發佈或測試版。

查看'AssemblyInformationalVersion'。

[assembly: AssemblyVersion("1.0.0.1234")] 
[assembly: AssemblyFileVersion("1.0.0.1234")] 
[assembly: AssemblyInformationalVersion("1.0")] 

總是升級。

+1

是的,這正是它的工作原理。 問題是,當1.2.4。4569有一個缺陷,人們想要回滾到1.2.3.4568,他們不能簡單地運行舊的安裝程序。 有了msi,他們可以做到這一點,它會成功。 –

+0

回滾到測試版或回滾到之前的市場版本?回滾到測試版應該要求卸載/重新安裝,更大的問題在發揮。之前的市場發佈應該增加主要版本號以允許獨立的多版本安裝......但是這也要求你的應用使用單獨的應用數據文件夾等。 –

+0

我不認爲你的想法是如何將軟件部署到我的方法。我們每3-4周發佈一次beta軟件,每4-6個月發佈一次正式版本。這些並不是重大修改,讓它們並排安裝是沒有意義的。他們正在升級。從本週的新測試版迴歸到上個月的正式發佈可能通過MSI進行,但不能通過刻錄。 MSI會進行卸載,然後制定新版本。它在我們改變燃燒之前完美運行。 Burn還做了其他幾件好事,它只是說它不能處理這件事。 –