2016-07-28 22 views
1

Ich habe ein Installationsprogramm erstellt, das eine config.ini kopiert und den Benutzer nach Werten fragt, die dann in die INI-Datei eingefügt werden. Dies funktioniert während einer Neuinstallation und größeren/kleineren Upgrades.WiX Installer entfernt Konfigurationsdateiwerte bei Reparatur

<Component Id="ConfigIni" Guid="GUID-GOES-HERE" DiskId="1"> 
    <File Id="ConfigIniFile" 
      Name="config.ini" 
      Source="../../artefacts/etc/template-config.ini" 
      KeyPath="yes"/> 
    <IniFile Id="ValueOne" 
      Action="addLine" 
      Directory="ETC" 
      Section="sectionone" 
      Name="config.ini" 
      Key="valueone" 
      Value="[VALUEONEPROPERTY]" /> 
    <IniFile Id="ValueTwo" 
      Action="addLine" 
      Directory="ETC" 
      Section="sectiontwo" 
      Name="config.ini" 
      Key="valuetwo" 
      Value="[VALUETWOPROPERTY]" /> 
</Component> 

Wenn jedoch ein Benutzer versucht, die gleiche Version des Produkts zu installieren, die bereits installiert ist, gibt der Installateur Reparaturmodus. Ich bin mir nicht sicher, wie der Reparaturmodus funktioniert, aber im Fall der Datei config.ini scheint es die Datei mit den aufgefüllten Werten zu löschen, sie erneut zu kopieren, und da es sich um eine Reparatur handelt, werden keine Benutzerwerte zum Auffüllen der config.ini Datei mit, so dass die Datei leer ist.

Gibt es eine Möglichkeit, das Installationsprogramm zu veranlassen, diese Datei bei der Reparatur zu ignorieren oder die ursprünglichen Benutzerwerte zu erhalten?

+0

Mögliches Duplikat von [WIX. Wie kann man eine Funktion während der Reparatur nicht neu installieren?] (Http://stackoverflow.com/questions/28816058/wix-how-to-not-reinstall-a-feature-during-repair) – Vanita

+0

Vielleicht kein Duplikat. Die Frage, die Sie verlinken, scheint im Vergleich zu dieser Frage eher verwirrend. – Wolf

Antwort

2

Das grundlegende Problem besteht darin, dass die Eigenschaftswerte nicht beibehalten werden. Es gibt keine Magie, die automatisch die Werte von Eigenschaften zwischen einer Installation und einer Reparatur (oder das Hinzufügen neuer Funktionen usw.) speichert. Das Problem besteht nicht darin, dass die Datei ersetzt wird, da Windows keine Dateien ersetzt, die mit Benutzerdaten geändert wurden.

Verwenden Sie in WiX die "remember property" pattern, um die Werte von Eigenschaften zu speichern, damit sie in diesen Wartungsfällen wiederhergestellt werden.