2014-05-12 14 views
6

Quindi ho un semplice programma di installazione di masterizzazione, principalmente per includere gli aggiornamenti .net o occasionalmente un pacchetto driver per l'hardware con cui la nostra app deve parlare.Wix Burn, come posso consentire il downgrade?

Gli MSI creano assistenza per l'aggiornamento o il downgrade.

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

Noi di solito hanno versioni beta e quando un utente vuole effettuare il downgrade da una versione beta di nuovo alle nostre versioni stabili che non si può semplicemente eseguire il vecchio installer EXE. Devono rimuovere esplicitamente il pacchetto precedente da Aggiungi/Rimuovi programmi per installare il precedente EXE Burn.

Questo non era un problema con l'installazione basata su MSI. Come possiamo tornare a quella funzionalità?

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

Quindi cosa sta succedendo quando si esegue il vecchio programma di installazione di burn exe? Idealmente brucia gli aggiornamenti delle maniglie a livello di masterizzazione e MSI. Quindi se l'MSI è configurato per fare downgrade, dovrebbe succedere. Se non sta succedendo, puoi incollare i log di installazione/disinstallazione di masterizzazione? – Isaiah4110

+0

Dici "downgrade da una versione beta alla nostra versione stabile". Trattiamo una versione stabile come un aggiornamento da una versione beta. per esempio. La versione beta 1.2.3.1234 è vista dall'utente come "1.2.3.1234". La seguente versione è 1.2.3.1235 ma è vista dall'utente come, ad esempio, "1.2". Il numero di versione usato da Wix può essere diverso dalla versione vista dall'utente dell'utente. per esempio. versione informativa. –

risposta

0

provare ad aggiungere <Property Id="REINSTALLMODE" Value="amus" /> nel file product.wxs. La proprietà REINSTALLMODE è un insieme di impostazioni che definisce il comportamento della nuova installazione con diverse/stessa versione. Per ulteriori dettagli, è possibile verificare come riferimento REINSTALLMODE property.

+1

Ho provato ad aggiungere questa proprietà, ma non mi ha permesso di eseguire il downgrade della versione. Vedi la mia risposta per qualcosa che ha funzionato per me. – Contango

+0

+1. Sicuramente sembra una soluzione migliore. Ma questo ha funzionato per me, perché ho abilitato a msi di riscrivere tutto il registro e copiare di nuovo i file impostando questa proprietà. Proverò la soluzione fornita da te. Aggiungerò commenti se funziona per me. – Durgesh

0

Trattare le beta come release che portano a versioni stabili (RC o di mercato). La versione di file/assieme si sposta sempre verso l'alto, quindi l'installazione è un aggiornamento.

Prendete questa sequenza di release:

  • 1.2.3.4567 Beta
  • 1.2.3.4568 rilascio sul mercato
  • 1.2.4.4569 Beta Successivo

Definire la versione che il cliente vede in funzione su se un mercato (stabile) o una versione beta.

Controllare "AssemblyInformationalVersion".

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

Aggiornamento sempre.

+1

Sì e questo è esattamente come funziona. Il problema è che quando 1.2.4.4569 ha un difetto e le persone vogliono tornare alla versione 1.2.3.4568, non possono semplicemente eseguire il vecchio programma di installazione. Con MSI potevano farlo e avrebbe funzionato con successo. –

+0

Tornare a una versione beta o tornare alla versione precedente del mercato? Il ripristino di una versione beta dovrebbe richiedere la disinstallazione/reinstallazione, problemi più grandi in gioco. La versione precedente del mercato dovrebbe aumentare il numero di versione principale per consentire installazioni di versioni multiple indipendenti ... ma ciò richiede anche che l'app utilizzi cartelle di dati dell'app separate ecc. –

+0

Non credo che la tua idea di come il software disponga di quadrati con i miei. Rilasciamo il software beta ogni 3-4 settimane e una versione ufficiale ogni 4-6 mesi. Queste non sono revisioni importanti, sarebbe non sensato installarle fianco a fianco. Sono aggiornamenti sul posto. Rollback da una nuova beta di questa settimana, per mesi la versione ufficiale è possibile tramite MSI, ma non tramite burn. MSI esegue una disinstallazione e quindi stabilisce la nuova versione. Ha funzionato perfettamente prima che cambiassimo per bruciare. Burn fa molte altre cose carine, fa schifo che non lo gestisca. –

Problemi correlati