2014-05-12 19 views
6

Also ich habe ein ziemlich einfaches Burn-Installationsprogramm, hauptsächlich um .net-Upgrades oder gelegentlich ein Treiberpaket für Hardware, mit der unsere App sprechen muss, zu integrieren.Wix Burn, wie kann ich Downgrade zulassen?

Die MSIs erstellen wir Support-Upgrades oder Downgrades.

<?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> 

Wir haben in der Regel Beta-Versionen und wenn ein Benutzer von einem Beta zurück zu unseren stabilen Versionen degradieren sie die alten EXE-Installer nicht einfach ausführen können. Sie müssen das vorherige Paket von Software hinzufügen/entfernen explizit zum Installer der älteren Burn EXE entfernen.

Dies war kein Problem mit der MSI-basierten Installation. Wie kommen wir zu dieser Funktionalität zurück?

Log

[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

Was passiert also, wenn Sie den alten Burn-Exe-Installer ausführen? Im Idealfall behandelt burns Upgrades auf der Brennebene und der MSI-Ebene. Also, wenn das MSI eingerichtet ist, um Downgrades durchzuführen, sollte es passieren. Wenn es nicht passiert, können Sie bitte die Brenn-Installations-/Deinstallations-Protokolle einfügen? – Isaiah4110

+0

Sie sagen "Downgrade von einer Beta zurück zu unserer stabilen Version". Wir behandeln eine stabile Version als Upgrade von einer Beta-Version. z.B. Beta 1.2.3.1234 wird vom Benutzer als "1.2.3.1234" gesehen. Die folgende Version ist 1.2.3.1235, wird aber vom Benutzer als "1.2" angesehen. Die von Wix verwendete Versionsnummer kann sich von der Version unterscheiden, die der Benutzer sieht. z.B. informative Version. –

Antwort

0

Try <Property Id="REINSTALLMODE" Value="amus" /> in Ihrer product.wxs Datei hinzuzufügen. Die REINSTALLMODE-Eigenschaft ist eine Gruppe von Einstellungen, die das Verhalten einer neuen Installation mit einer anderen/derselben Version definiert. Für weitere Details können Sie REINSTALLMODE property als Referenz überprüfen.

+1

Versucht, diese Eigenschaft hinzuzufügen, aber es würde immer noch nicht die Version herunterstufen. Sehen Sie meine Antwort für etwas, das für mich funktionierte. – Contango

+0

+1. Definitiv eine bessere Lösung. Aber dieses eine funktionierte für mich, während ich msi ermöglichte, alle Register neu zu schreiben und oll die Dateien wieder zu kopieren, indem ich diese Eigenschaft einsetzte. Ich würde versuchen, die von Ihnen zur Verfügung gestellte Lösung zu verwenden. Ich werde Kommentare hinzufügen, wenn es für mich funktioniert. – Durgesh

0

Behandle Betas als Releases, die zu stabilen (RC oder Markt) Releases führen. Die Datei-/Assembly-Version wird immer nach oben verschoben, sodass die Installation ein Upgrade ist.

diese Folge von Freisetzungen Nehmen:

  • 1.2.3.4567 Beta
  • 1.2.3.4568 Marktfreigabe
  • 1.2.4.4569 Nächste Beta

die Version definieren, die der Kunde in Abhängigkeit sieht wenn ein Markt (stabil) Release oder eine Beta.

Überprüfen Sie 'AssemblyInformationalVersion'.

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

Immer aktualisieren.

+1

Ja und genau so funktioniert es. Das Problem ist, dass wenn 1.2.4.4569 hat einen Fehler und Leute wollen Rollback auf 1.2.3.4568, sie können nicht einfach den älteren Installer ausführen. Mit MSIs konnten sie das tun und es würde erfolgreich funktionieren. –

+0

Rollback zu einer Betaversion oder Rollback zu einer früheren Markteinführung? Wenn Sie zu einer Betaversion zurückkehren, sollten Sie die Deinstallation/Neuinstallation durchführen, um größere Probleme zu vermeiden. Vorherige Markteinführung sollte Hauptversionsnummer erhöhen, um unabhängige mehrfache Versionsinstallationen zu erlauben ... aber das erfordert auch Ihre Anwendung, getrennte app-Datenfaltblätter etc. zu verwenden. –

+0

Ich denke nicht Ihre Idee von, wie Software Quadrate mit meins eingesetzt wird. Wir veröffentlichen Beta-Software alle 3-4 Wochen und eine offizielle Veröffentlichung alle 4-6 Monate. Dies sind keine größeren Revisionen, es wäre sinnlos, sie nebeneinander zu installieren. Sie sind in Upgrades. Rolling Back von einer neuen Beta-Version dieser Woche, zu letzten Monaten offizielle Veröffentlichung ist möglich über MSI, aber nicht über brennen. Das MSI führt eine Deinstallation durch und legt dann die neue Version fest. Es hat perfekt funktioniert, bevor wir zum Brennen gewechselt haben. Burn macht noch einige andere nette Sachen, es ist nur scheiße, dass es damit nicht klarkommt. –

Verwandte Themen