2017-01-20 2 views
0

Ich mache eine Konfiguration meiner Anwendung mit WiX. Ich mag eine INI-Datei im aktuellen Benutzerordner unter Windows zum Kopieren/Einfügen (C: \ Benutzer \ {username})% USERPROFILE funktioniert nicht mit WiX

Ich sah auf diesen post, dass ich den Tag [% USERPROFILE] verwenden sollte. Ich benutze es auf diese Weise:

<Directory Id="UserFolder" Name="[%USERPROFILE]"> 
<Directory/> 

Als Ergebnis wird ein Ordner [% USERPROFILE] in C erstellt: \ die INI-Datei enthält. Das ist nicht was ich will.

Hat jemand eine Idee, wie es funktioniert?

+0

http://stackoverflow.com/questions/17500373/wix-toolset-setting-a-property-to-user-profile-folder- Pfad-und-Programm-Dateien und http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Environment-variables-into-a-WIX-property-td5412818.html könnte von Interesse sein Sie. Ich habe [% USERPROFILE] noch nie gesehen und es sieht komisch aus. Cursorprüfung findet es nicht in den Wix-Dokumenten. Könnte nicht mehr gültig sein. – Will

+1

Danke für deine Eingaben @Will Ich habe vergeblich versucht, was sie erwähnt haben. – bam500

+0

Jeder Verweis auf den aktuellen Benutzer ist für Installationen pro Maschine nicht sinnvoll. Sind Sie sicher, dass Ihre Konfiguration pro Benutzer und nicht pro Computer erfolgt? (Und in jedem Fall ist es die falsche Sache, Ihre INI-Datei direkt in das Benutzerprofil zu legen, anstatt in den Anwendungsdatenordner des Benutzers. Windows ist nicht Linux!) –

Antwort

1

[%USERPROFILE] ist eine gültige Umgebungsvariablenreferenz, aber ich denke nicht, dass sie in diesem Kontext verwendet werden kann, da dieser Kontext nicht formatted ist. Details finden Sie unter Directory Table.

Beachten Sie, dass, wie in den Kommentaren erwähnt, %USERPROFILE% wahrscheinlich der falsche Ort für alle Dateien ist, die Sie möglicherweise installieren möchten. Erwägen Sie die Verwendung eines anderen predefined folder, wie AppDataFolder, LocalAppDataFolder oder PersonalFolder.

Wenn Sie mit PersonalFolder gehen, ich glaube, Sie nur, dass stattdessen verwenden können:

<Directory Id="PersonalFolder"> ... </Directory> 

Wenn es keine zufriedenstellende vordefinierten Ordner-Eigenschaft ist, können Sie entweder ein type 51 oder eine type 35 benutzerdefinierte Aktion (je nachdem, ob Sie planen es vor oder nach der Einstellung von CostFinalize, um den Laufzeitwert Ihres Ordners auf [%USERPROFILE] festzulegen. Diese benutzerdefinierten Aktionen formatieren den Wert, den sie verwenden. Stellen Sie sicher, einen ALL-CAPS-Namen zu verwenden, damit es zur Laufzeit festgelegt werden kann , wenn das Verzeichnis USERPROFILEFOLDER heißt:

<SetDirectory Id="USERPROFILEFOLDER" Value="[%USERPROFILE]"/> 
<!-- or --> 
<SetProperty Id="USERPROFILEFOLDER" Value="[%USERPROFILE]"/> 

(Und vergessen Sie nicht irgendwo um die Aktion zu planen.)

+0

Vielen Dank Ich denke, ich werde meine Soft in LocalAppDataFolder statt USER-Ordner dann lesen. – bam500

Verwandte Themen