2010-07-20 14 views
10

Ich habe ein Programm, das mit einem WiX-Installer installiert.WiX Installer-Dateien bei der Deinstallation entfernen, aber nicht auf ein Upgrade

Das Programm selbst erstellt eine Reihe von Dateien im [CommonAppDataFolder] \ [MyAppName] \ Verzeichnis. Diese Dateien haben alle dieselbe Erweiterung (nennen wir sie .dat).

Auf Upgrade, möchte ich behalten diese Dateien.
Auf deinstallieren, ich möchte diese Dateien entfernen.

ich derzeit Löschen der Dateien als so:

<Directory Id='CommonAppDataFolder'> 
    <Directory Id='MyCommonAppDataFolder' Name='MyAppName'> 
    <Component Id='RemoveFilesComponent' Guid='71cb0cd8-8459-4a8f-89b7-f00977aa7b70'> 
     <RemoveFile Id='RemoveFiles' Name='*.dat' On='uninstall'/> 
    </Component> 
    </Directory> 
</Directory> 

Und ich habe diese Upgrades zu erleichtern:

<InstallExecuteSequence> 
    <RemoveExistingProducts After='InstallInitialize'/> 
</InstallExecuteSequence> 

Nun, wenn ich deinstallieren, werden die DAT-Dateien korrekt entfernt.
Beim Aktualisieren werden jedoch auch die .dat-Dateien entfernt. Ich nehme an, da ein Upgrade eine Deinstallation auf der vorherigen Version durchführt.

Bin ich dieses Problem richtig nähern? Wie kann ich die Dateien beim Upgrade beibehalten und sie bei der Deinstallation entfernen?

+0

Haben Sie jemals eine Lösung für dieses Problem gefunden? – darbid

+0

Vor langer Zeit, aber nicht, dass ich mich erinnern kann. Ich glaube, ich habe die Dateien nach einer Deinstallation im CommonAppDataFolder liegen gelassen. – MatthewKing

+0

Danke Matt für die Antwort. – darbid

Antwort

1

Eine Möglichkeit wäre, auf ein kleines Update zu wechseln. Das hat viele Einschränkungen, also ist es nicht so einfach wie es klingt.

+1

Ihre Antwort könnte vor oder in den frühen Stadien von Wix Burn sein, also frage ich mich, ob Sie diese Frage jetzt anders beantworten könnten oder könnten. Ist eine mögliche Lösung, um einen Wix-Bootstrapper mit 2 msi-Paketen zu erstellen. Seine .dat-Dateien befinden sich im zweiten MSI-Paket und werden nicht aktualisiert. – darbid

+0

Wenn das Originalpaket anders versendet wird, können viele Dinge getan werden. Ich antwortete, dass er sich mit dem Versand auseinandersetzen musste. –

+0

@RobMensching gibt es eine Antwort auf nicht versandte Pakete? (derzeit in Entwicklung) Es wäre sehr hilfreich. Vielen Dank! – Eli

2

Haben Sie versucht, einen Zustand zu den RemoveExistingProducts hinzufügen? Das würde ich tun.

<RemoveExistingProducts After='InstallInitialize'>(NOT UPGRADINGPRODUCTCODE) AND (Installed)</RemoveExistingProducts> 
+1

Dies scheint, was ich will, aber natürlich bedeutet es, dass die vorherige Version nicht beim Upgrade entfernt wird. Ich habe zum Beispiel mehrere Einträge für meine Anwendung im Kontrollfeld 'Software hinzufügen oder entfernen'. Irgendeine Problemumgehung? – MatthewKing

+1

Sie könnten versuchen, das vorhandene Produkt zu After InstallFinalize zu entfernen. Dies würde alle geänderten Dateien und Registrierungseinstellungen entfernen, aber behalten, was Sie nicht getan haben. IT könnte auch mit dir ProductID oder Version zu tun haben. Das Betriebssystem denkt wahrscheinlich, dass es ein völlig anderes Programm ist. –