2016-06-21 17 views
1

Ich versuche, ein Installationsprogramm für eine einfache .NET WPF C# -App zu erstellen. Ich verwende VS 2013 und WiX 3.10.2. Nach den Schritten im Wix Tutotial/.NET/Bootstrapping habe ich eine Boostrap.exe erstellt, die .NET Web Installer und die App Setup.msi kettet.WiX Bootstrapper

BEARBEITEN: Mein Ziel ist es zu verstehen, wie Sie die WiX Bootstrap und Setup-Projekte für kleine Updates, kleinere Upgrades und größere Upgrades Szenarien konfigurieren.

Out of the Box scheint alles gut zu funktionieren, wenn ich eine neue Installation starte. Wenn ich jedoch eine neu erstellte Bootstrap.exe über eine bereits vorhandene Installation ausführe, erscheint ein doppelter Eintrag in den Apps & Features und keine Datei wird im Zielort der App geändert - entgegen der Erwartung, dass der gleiche Eintrag in den Apps & bleiben sollte Features und der Zielort sollten aktualisiert werden. EDIT: Sieht so aus, als könnte es nicht möglich sein, REINSTALLMODE zu ändern?

Wenn ich eine Produkt-ID hinzufüge und dann die Version des Setups (geringfügige Aktualisierung) ändere, schlägt der Bootstrap mit der abgebrochenen Installation fehl. Die Protokolldatei zeigt "Fehler 0x80070642: kleinere Aktualisierung von MSI-Paket konnte nicht durchgeführt werden". EDIT: In der MSI-Protokoll schlägt ein SecureRepair mit Fehlercode 39439E438 (?) Wahrscheinlich, weil der gespeicherte Hash-Wert nicht mit dem aktuellen übereinstimmt ... aber das sollte in einem kleinen Upgrade MSI erwartet werden, richtig?

Gibt es empfohlene Konfigurationen zwischen den Boostrapper- und Setup WiX-Projekten, so dass die kleinen Upgrades, kleinere Upgrades und größere Upgrades richtig gehandhabt werden können, oder unterstützt der WiX Bootstrapper NUR wichtige Upgrades?

Ich werde weiter untersuchen und ich werde Updates zu meinen Ergebnissen veröffentlichen;

Alle Hinweise werden sehr geschätzt, Danke!

Hier sind die Quelldateien, die ich kaum aus dem WiX Assistenten generierten Code geändert:

--- --- Product.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Product Id="*" Name="SetupProject1 1.0.0.0" Language="1033" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="4c8a8cbf-e3d0-410c-8a8d-7e67eb4e7ff7"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" InstallPrivileges="limited" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 

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

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="LocalAppDataFolder"> 
      <Directory Id="AcmeFolder" Name="Acme"> 
       <Directory Id="INSTALLFOLDER" Name="WpfApplication1" /> 
      </Directory> 
     </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
     <Component Id="ProductComponent" Guid="8CA0B70F-39DA-4B4B-9104-46C58E26FCF4"> 
      <CreateFolder/> 
      <RemoveFolder Id="RemoveAcmeFolder" Directory="AcmeFolder" On="uninstall"/> 
      <RemoveFolder Id="RemoveINSTALLFOLDER" On="uninstall" /> 
      <RegistryValue Root="HKCU" Key="Software\Acme\WpfApplication1" Name="Version" Type="string" Value="[ProductVersion]" KeyPath="yes" /> 
      <File Source="$(var.WpfApplication1.TargetPath)" KeyPath="no" /> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

--- Bundle.wxs ---

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 

<Bundle Name="Bootstrapper1 1.0.0.0" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="e1092cbb-9134-42fc-a9f2-652f95f361fd"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 

    <Chain> 
     <MsiPackage Name="Acme Setup" SourceFile="$(var.SetupProject1.TargetPath)" Vital="yes" /> 
    </Chain> 
</Bundle> 

Antwort

3
  • Wenn Sie Ihre ausführbaren Dateien ändern, erhöhen Sie deren Versionsnummern. Windows Installer geht davon aus, dass Dateien mit denselben Versionen identisch sind.

  • Um ein MSI-Paket zu aktualisieren, erhöhen Sie die Versionsnummer entweder als Teil eines größeren Upgrades (typisch) oder eines kleineren Upgrades.

  • Um ein Bundle zu aktualisieren, erhöhen Sie die Versionsnummer. Standardmäßig behält Burn Pakete mit derselben installierten Version bei.

+0

Vielen Dank Bob. Ich weiß, dass es in der Theorie drei Kategorien von Produktänderungen gibt (kleine Updates, kleinere Upgrades und größere Upgrades). Was ich herausfinden möchte, ist, wie ich meine WiX-Lösung konfigurieren kann, um all diese Funktionen ausführen zu können.Ich denke an kleine Updates, während ich entwickle, Minor-Upgrades werden die offiziellen Bug-Fixes oder Feature-Ergänzungen sein, und Major-Upgrades werden sein, wenn die neue Version Operation/Layout mit alten nicht kompatibel ist, oder wenn die beiden Versionen existieren und funktionieren können Seite an Seite. Macht das Sinn? –

+0

Die Dokumentationshinweise Ich kann die REINSTALLMODE-Codes verwenden, um zu steuern, wie die Dateien aktualisiert werden. Zum Beispiel wird der "e" -Code erneut installiert, selbst wenn die Zieldatei dieselbe Version hat. Wo wird der REINSTALLMODE in WiX gesteuert? –

+0

Burn kümmert sich um REINSTALLMODE. Zu Upgrade-Typen siehe http://www.joyofsetup.com/2008/12/29/neither-more-norless/. Sofern Sie keine spezifischen Anforderungen haben, können Sie alles außer wichtigen Upgrades ignorieren. –

Verwandte Themen