Jump to content


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.
Photo

WIX: Änderungen in Maintenance Mode


6 replies to this topic

george_r

george_r
  • Full Members
  • 4 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.


george_r

george_r
  • Full Members
  • 4 posts

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

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?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.

george_r

george_r
  • Full Members
  • 4 posts

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? huh.gif (hab ich die Begriffe falsch? maintenance = Wartung, repair = reparieren, oder?)

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.

george_r

george_r
  • Full Members
  • 4 posts

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.