2017-01-31 3 views
0

In einem Wix-Installer versuche ich eine Umgebungsvariable basierend auf dem Wert der Radiogruppe einzustellen. Ich habe kein Glück herauszufinden, wie es geht.wix: Wie setze ich eine Umgebungsvariable basierend auf UI-Radiogruppenwerten?

Die Radiogruppe in der Benutzeroberfläche hat drei Optionen:

  1. Sie Umgebungsvariable
  2. nicht gesetzt
  3. die Variable pro
  4. die Variable pro Maschine

Die UI Set Benutzer Set mit Die 3-Tasten-Radio-Gruppe sieht so aus:

<Control ...> 
    <RadioButtonGroup Property="VAR_SCOPE"> 
    <RadioButton Value="user" ... /> 
    <RadioButton Value="machine" ... /> 
    <RadioButton Value="none" ... /> 
    </RadioButtonGroup>    
</Control> 

Die Komponente, die die Umgebungsvariable erzeugt, ist wie folgt:

<Directory ...> 
    <Component ...> 
    <CreateFolder /> 
    <Environment Id='Evar' Action='set' System='yes' Name='FOO' Value='bar' /> 
    </Component> 
</Directory> 

Ob das env-var pro Benutzer oder pro Maschine gesetzt wird, ist abhängig vom Wert des Attributs ‚System‘: ja für Maschine, nicht für Benutzer.

Antwort

0

Ich glaube nicht, dass MSI dies unterstützt. Ich sehe einen Kommentar in https://msdn.microsoft.com/en-us/library/windows/desktop/aa368369(v=vs.85).aspx sagen, dass unter Windows 2000 das * Präfix den Bereich steuert, aber ich habe das nie verwendet. Soweit ich weiß, respektiert MSI immer den Systemkontext der Installation. (Per-User vs Pro-Machine) Ich nehme an, dass es im Vergleich zu dem, was die Registrierungstabelle tun kann, ein kurzes Kommen ist. Umgebungsvariablen sind im Grunde genommen nur Registrierungstabelleneinträge mit einer SendMessage, sodass Sie die Registrierung und eine benutzerdefinierte Aktion "minmilist" verwenden können.

Wenn Sie dies tun, möchten Sie zwei sich gegenseitig ausschließende Komponenten haben.

+0

Ich lerne gerade Wix, also weiß ich nicht, wie man viele Dinge macht. Normalerweise haben Installationsprogramme ein Kontrollkästchen zum Hinzufügen/Auslassen von Änderungen an PATH-Variablen. Kannst du Code zeigen, um so etwas zu tun? Eine Art bedingter Weg zum Ändern von env-Variablen. – Dess

Verwandte Themen