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

Pacht überschreibt kundenspezifische Registry-Einträge


9 replies to this topic

Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 10 April 2013 - 09:40

Hallo

 

Für unser Produkt veröffentlichen wir regelmässig Updates. Dazu erstelle ich ein Patch (.msp-File).

 

Die kundenspezifischen Einstellungen, welche wärend der Installation eingegeben werden können, sind in der Registry hinterlegt. Die Registryeinträge haben eine eigenen Komponente mit der Condition 'NOT Installed AND NOT PATCH'.

 

Trotz dieser Einstellungen werden die Registryeinträge durch den Patch mit dem Standardwert überschrieben.

 

Was mach ich falsch?

 

Gruess
Hyper



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 April 2013 - 10:01

Hast du auch "Re-evaluate condition" auf yes gesetzt? Allerdings würde das dann (wenn ich mich nicht irre) dazu führen, dass der registry-Eintrag beim Patch entfernt wird. Eine Möglichkeit: Füge eine Systemsuche hinzu, die evtl. vorhandene Registry-Daten ausliest. Nur wenn nichts gefunden wurde, setze das Property mit dem Default-Wert. Im Registry-Eintrag verwendest du dann das Property. Alternativ: Lass nicht das Setup die Registry-Einträge schreiben sondern die Applikation beim ersten Start. Dann bleiben sie allerdings bei der Deinstallation zurück. In beiden Fällen überstehen die Daten so auch ein Majopr Upgrade, im zweiten Fall sogar manuelle Deinstalaltion und Wieder-Installation.



Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 10 April 2013 - 14:07

Hallo Stefan

 

Danke für deine Antwort.

 

Deine Vermutung ist richtig, die "Re-evaluate condition" auf yes löscht den Registry Eintrag mit dem Patch, das habe ich bereits versucht.

Das mit der Applikation in die Registry schreiben geht nicht, dafür reicht die Zeit nicht mehr.

Bleibt noch das mit der Systemsuche.

 

Igendwie unschön das ganze, eigentlich sollte IS das doch korrekt interpretieren können, dafür gibts ja die Möglichkeit in der Condition die Properties abzufragen.

Das Property PATCH hat laut Logfile der Grundinstallation folgender Wert: PATCH=""

Im Logfile des Updates: PATCH="C:\Users\USER_ADMIN\Desktop\MyPatch.msp"

 

Ich frage mich warum das nicht geht?!?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 April 2013 - 16:07

dafür gibts ja die Möglichkeit in der Condition

Nein, das ist ein Missverständnis. Die Kondition legt fest, ob eine Komponente auf das Zielsystem soll oder nicht. Also zum Beispiel wenn du zwei unterschiedliche Varianten einer DLL brauchst, eine für Windows XP und eine für Windows 7. Es gibt aber keine Condition die das Überschreiben regelt.

Wenn du aus dem REINSTALLMODE das u und/oder das m weglässt, werden Registreyeinträge für user bzw. machine nciht geschrieben. Das gilt aber global für das ganze Paket, nicht nur für eine bestimmte Komponente.



Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 17 April 2013 - 07:02

Das scheint mir eine logische Erklärung zu sein.

 

Habe in der Hilfe auch eine gute Beschreibung aller Optionen für das Property REINSTALLMODE gefunden.

Leider haben erste Tests ohne u und m (REINSTALLMODE=os) keinen Erfolg gebracht.

 

Für die neue Version unseres Produktes habe ich aber noch Zeit bis zum ersten Patch, werde bis dahin noch ein paar Tests machen und hoffentlich eine Lösung finden.

Melde mich dann wieder...



Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 19 April 2013 - 07:21

Habe ein Lösung für mein Problem gefunden!
 
Im Patch Design unter dem Advanced Reiter können die Patch settings eingetragen werden. Ein Feld darin heisst 'MSI Command Line Arguments'. Darin sind standardmässig die beiden Properties REINSTALLMODE=omus und REINSTALL=ALL gesetzt.
 
Vergebens habe ich versucht das Verhalten des Patchs zu ändern indem ich eines dieser Properties änderte (REINSTALLMODE=os).
 
Wenn ich aber dem Patch die Properties von ausserhalb mitgebe funktioniert es. Dazu öffne ich 'Ausführen' im Windows und gebe folgenden String ein:
msiexec.exe /update MyPatch.msp REINSTALLMODE=os REINSTALL=ALL /qb
 
Warum funktioniert das bei mir im IS nicht? Habe ich noch eine Einstellung falsch gesetzt? (siehe Anhang)

Attached Images

  • MSI-Commands.jpg


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 April 2013 - 19:17

Erzeugst du eine update.exe oder nur ein .msp? Die Command Line Arguments werden vom Launcher übergeben.

Welcher REINSTALLMODE tatsächlich verwendet wird, siehst du im Log, und auch wer ihn ggf. ändert. Zum Beispiel setzt der "Next"-Button auf dem PatchWelcome Dialog den REINSTALLMODE auf omus, wenn er nicht bereits auf der Kommandozeile gesetzt wurde.

 



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 April 2013 - 20:16

Hier noch ein Screenshot zum Thema Next-Button

Attached Images

  • PatchWelcome.gif


Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 22 April 2013 - 08:35

Hallo Stefan

 

Danke für dein Feedback!

 

Patchfiles sind bei uns .msp-Files und diese werden silent installiert (/qb) also kein UI und somit auch kein Next Button.

Im LogFile finde ich das Property REINSTALLMODE übrigens nicht, was mich doch sehr verwundert.

 

Es bekommt anscheinend auch nicht den Wert welcher im Direct Editor als Inizialwert mitgegeben wird. Dort habe ich es auch schon erfolglos versucht.

 

Das einzige was zur Zeit wirklich geht ist, wenn ich die Argumente von ausserhalb mitgebe. Damit kann ich in diesem Fall gut leben, aber es wunder mich halt doch, warum gewisse Dinge im IS nicht das tun was sie eigentlich sollten.



Hyper71

Hyper71
  • Full Members
  • 44 posts

Posted 25 April 2013 - 07:50

Habe den Grund des vermeintlich falschen Verhaltens gefunden.

 

Damit die MSI Command Line Argumente ausgeführt werden, muss der Patch als update.exe erstellt werden. Das hast du bereits früher mal erwähnt, war mir dessen aber nicht bewusst.

 

Somit wäre das auch geklärt :)

 

Vielen Dank für deine Hilfe!

 

Attached Images

  • Patchsetting.jpg