This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.

WIX: Änderungen in Maintenance Mode
Started by
george_r
, Jan 09 2009 11:53
6 replies to this topic
Posted 09 January 2009 - 11:53
Ich habe ein kleines Problem:
- einen custom dialog mit einer Gruppe von Radiobuttons, die eine Property ändern
Die Änderung der Property führt bei der Installation zu einem Eintrag in der Registry, je nachdem, welcher Radiobutton aktiveirt wird, 0 oder 1.
Ich möchte im Maintenance mode diesen Registry-Wert ändern lassen können.
Der Dialog wird (durch entsprechende Abwandlung von MONDO) auch im Maintenance mode angezeigt. Beim anschließenden Klick auf "Ändern" passiert aber nichts.
Muss ich zusätzliche features/components etc. für den maintenance mode definieren? Wenn ja, wie kennzeichne ich sie?
Vielen Dank schon mal.
Georg
- einen custom dialog mit einer Gruppe von Radiobuttons, die eine Property ändern
Die Änderung der Property führt bei der Installation zu einem Eintrag in der Registry, je nachdem, welcher Radiobutton aktiveirt wird, 0 oder 1.
Ich möchte im Maintenance mode diesen Registry-Wert ändern lassen können.
Der Dialog wird (durch entsprechende Abwandlung von MONDO) auch im Maintenance mode angezeigt. Beim anschließenden Klick auf "Ändern" passiert aber nichts.
Muss ich zusätzliche features/components etc. für den maintenance mode definieren? Wenn ja, wie kennzeichne ich sie?
Vielen Dank schon mal.
Georg
Posted 13 January 2009 - 10:13
Schreib doch mal eine Logdatei. Dort kannst du prüfen, welcher REINSTALLMODE verwendet wird. Das ist eine Buchstaben-Folge bei der u für HKCU und m für HKLM-Einträge steht. Und du sieht, ob die Komponente mit dem Registry-Eintrag zur (Re-)Installation ausgewählt ist.
Stefan Krüger
InstallSite.org twitter facebook
Posted 13 January 2009 - 17:01
Hallo Stefan,
Vielen Dank für die Antwort,
aber in der Log-Datei kann ich keinen Wert für REINSTALLMODE finden.
In der mit -lv ausgegebenen Log finde ich beim ersten Install
Vielen Dank für die Antwort,
aber in der Log-Datei kann ich keinen Wert für REINSTALLMODE finden.
In der mit -lv ausgegebenen Log finde ich beim ersten Install
CODE |
MSI (s) (64:FC) [16:18:41:581]: Component: RegEntry0; Installed: Absent; Request: Local; Action: Local MSI (s) (64:FC) [16:18:41:581]: Component: RegEntry1; Installed: Absent; Request: Local; Action: Null |
- wobei RegEntry0 die Component ist, die meinen Registrywert 0 schreibt und ausgewählt war (wird in der WXS-Datei über "Condition" und Abfrage des Property-Wertes gesteuert):
CODE |
<Component Id='RegEntry0' Guid='0C2FC9C7-CD3D-4DDA-A8C4-77908A4AD5AC'> <Condition> MYPROPERTY = "0" </Condition> <Registry Root="HKLM" Key="SOFTWARE\MY_CIE" Name="MyProperty" Value="0" Type="string" /> </Component> <Component Id='RegEntry1' Guid='7A82305E-0846-4AFD-9E15-D4E0DAC6F5C4'> <Condition> MYPROPERTY = "1" </Condition> <Registry Root="HKLM" Key="SOFTWARE\MY_CIE" Name="MyProperty" Value="1" Type="string" /> </Component> |
In der Log-Datei zum Maintenance:
CODE |
MSI (s) (64:FC) [16:22:50:218]: Component: RegEntry0; Installed: Local; Request: Null; Action: Null MSI (s) (64:FC) [16:22:50:218]: Component: RegEntry1; Installed: Local; Request: Null; Action: Null |
- und da ich die Condition geändert hatte (MyProperty ist jetzt 1, das hat das Logfile auch registriert), sollte jetzt Component RegEntry1 greifen, wird aber offensichtlich nicht geändert.
Offenbar untersucht MSI, ob die Components installiert sind, und wenn ja, dann sieht es - trotz geänderter Condition - keinen Grund zur Neu-Installation bzw. Installationsänderung.
Wie bring ich WIX/MSI bei, dass eine Property- bzw. Condition-Änderung einer Komponente zu einer Änderung der vorhandenen Installation führen soll?
Posted 17 January 2009 - 17:22
Dazu musst du bei den Komponenten-Attributen das Flag für msidbComponentAttributesTransitive setzen. Wie das in WiX Syntx geht, weiß ich allerdings nicht.
Stefan Krüger
InstallSite.org twitter facebook
Posted 17 January 2009 - 18:19
Danke für den Tip, das in WIX einzubauen ist einfach:
CODE |
<Component Id='RegEntry1' Guid='7A82305E-0846-4AFD-9E15-D4E0DAC6F5C4' Transitive='yes' > |
... und dann ändert sich das auch, aber nur wenn ich msiexec /f starte, schon mal einen Schritt weiter... was ich aber eigentlich brauche, ist eine Änderung der Installation, wenn ich über den "Ändern"-Button im Dialog die entsprechende property über den Radiobutton einstelle... und da passiert leider immer noch nix ... vielleicht noch eine Idee?

Posted 22 January 2009 - 16:35
Doch, das sollte auch über Reparieren gehen - natürlich muss das transitive dann schon im Original-Paket gesetzt sein.
Schreib doch mal eine Logdatei um zu sehen, ob das Property richtig gesetzt, weitergegeben und ausgewertet wird.
Schreib doch mal eine Logdatei um zu sehen, ob das Property richtig gesetzt, weitergegeben und ausgewertet wird.
Stefan Krüger
InstallSite.org twitter facebook
Posted 29 January 2009 - 10:25
Missverständnis: Reparieren geht ja, nur die Wartung über den WIX-Dialog nicht.
...
Ich denk, dass ich das Problem mal im Wix-User-Forum vortrage, da es doch eher ein WIX- als ein allgemeines MSI-Problem ist.
...
Ich denk, dass ich das Problem mal im Wix-User-Forum vortrage, da es doch eher ein WIX- als ein allgemeines MSI-Problem ist.