2016-05-16 8 views
0

Ich erstelle eine MSI-Setup-Datei mit dem WiX Toolset v3.10.2. Ich benutze InstallScope = 'perMachine', damit das Programm in den Ordner Programme Ordner installiert wird.Ordnungsgemäße Methode zum Installieren und Deinstallieren einer Datei im Anwendungsdatenordner in einem perMachine WiX-Installationsprojekt

Ich muss jedoch eine (Einstellungen) Datei in den Ordner Application Data Roaming des aktuellen Benutzers installieren.

<Directory Id="AppDataFolder"> 
    <Directory Id="ManufacturerAppDataFolder" Name="Manufacturer"> 
     <Directory Id="ProductAppDataFolder" Name="ProductName"> 
      <Component Id="AppDataConfig" Guid="643DB270-8D85-467B-A6BA-9A54924655E0" Feature="MainApplication"> 
       <RemoveFolder Id='RemoveProductAppDataFolder' Directory='ProductAppDataFolder' On='uninstall' /> 
       <RemoveFolder Id='RemoveManufacturerAppDataFolder' Directory='ManufacturerAppDataFolder' On='uninstall' /> 
       <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Name="UserConfigLocation" Value='[ProductAppDataFolder]' KeyPath='yes' /> 
       <File Source="Files\user.settings" /> 
      </Component> 
     </Directory> 
    </Directory> 
</Directory>  

Ich bekomme diese Warnung, wenn ich renne light.exe:

warning LGHT1076 : ICE91: The file 'user.settings' will be installed 
to the per user directory 'ProductAppDataFolder' that doesn't vary based 
on ALLUSERS value. This file won't be copied to each user's profile even 
if a per machine installation is desired. 

ich die MSI auf dem Administrator-Benutzer zu installieren ("FirstUser") von einem Windows 10 PC und die Einstellungsdatei korrekt auf

c: \ Users FirstUser \ AppData \ Roaming \ Hersteller \ Product \ USER.settings

Wenn ich lo \ Gin zu einem anderen Benutzerkonto ("SecondUser"), eine neue Einstellungsdatei erscheint

c: \ Users SecondUser \ AppData \ Roaming \ Hersteller \ Product \ USER.settings

jedoch \, nachdem ich die Deinstallation laufen Wenn Sie im Administratorkonto angemeldet sind ("FirstUser"), wird die Einstellungsdatei nur aus dem AppData-Ordner des FirstUser gelöscht. Die Einstellungsdatei im Ordner AppData des zweiten Benutzers wird nicht gelöscht, sie verbleibt auf dem Datenträger.

Was ist der richtige Weg, um eine Datei im Ordner "Anwendungsdaten" zu installieren, so dass sie für jeden Benutzer erstellt und auch für jeden Benutzer bei der Deinstallation entfernt wird?

+2

"Installieren Sie eine Datei im Ordner" Anwendungsdaten ", damit sie für jeden Benutzer erstellt wird": Lassen Sie die Anwendung sie erstellen. Es wird nicht installiert. Es wird nicht deinstalliert. Siehe Blog @PhilDW [referenziert] (http://stackoverflow.com/a/37261360/2226988). –

Antwort

2

Es sieht so aus als ob du es schon richtig machst. Die Deinstallation kann nicht zuverlässig alle anderen Profile auflisten, um die Daten zu entfernen. Siehe auch:

https://blogs.msdn.microsoft.com/oldnewthing/20070917-00/?p=25103/

Eine Alternative könnte die App neu zu gestalten, wenn die übrig gebliebenen Dateien eine große Sache sind. Die Einstellungen eines jeden Benutzers können in einer DB- oder Xml-Datei (als Beispiel) an einem Computerstandort gespeichert sein, an dem er bei der Deinstallation entfernt werden könnte (vorausgesetzt, er wird nicht aktualisiert).

Sie erhalten die Warnung, weil die ICE-Tests statisch sind - sie wissen nicht, ob die Installation pro Benutzer oder pro Computer erfolgt. Es ist schlecht formuliert - es bedeutet, dass die pro Maschine Installation die Datei nicht auf die Version des Benutzers jedes Benutzers installieren wird.