mayho33
Goto Top

Installshield Basic MSI (Windows Installer) mit 3010 beenden

Hallo @ All

Ich möchte in einer Basic-MSI nach Abschluss der Installation den ReturnCode 3010 an das System senden und stehe etwas am Schlauch.

Dachte das wäre eventuell in einer VBSCRIPT CustomAction möglich. Aber es werden anscheinend nur diese unterstützt.
CA ReturnCodes

Hat jemand eine Idee wie ich das bewerkstelligen kann? Der Sinn dahinter ist, dass wir via SCCM das Rebootverhalten der Clients steuern. Meine MSI liefert aber nur 0 für SUCCESS.

Danke für eure Hilfe!

Content-ID: 604582

Url: https://administrator.de/forum/installshield-basic-msi-windows-installer-mit-3010-beenden-604582.html

Ausgedruckt am: 25.12.2024 um 02:12 Uhr

145916
145916 14.09.2020 aktualisiert um 17:26:49 Uhr
Goto Top
So ne Idee:
Bau dir ein Wrapper-MSI, setze in der original MSI z.B. ein Reg-Eintrag oder was auch immer mit deinem Code und den liest du im Wrapper-MSI aus und gibst ihn zurück.
mayho33
mayho33 14.09.2020 um 21:14:37 Uhr
Goto Top
Hi @145916

Es geht mehr darum "wie" ich Installshield überhaupt dazu bringe den Code zurück zu geben. Wenn ich das wüsste wäre es eh einfach:

VB - CustomAction => After_InstallFinalize + Condition + bissl Code. Aber Return 3010 alleine ist halt leider nicht.

Bisher habe ich nur die Möglichkeit wie oben beschrieben gefunden. Das ist aber völlig unpraktikabel. Aber Möglichkeiten muss es geben, denn wie machen es die anderen Entwickler?

Grüße!
145916
145916 14.09.2020 aktualisiert um 21:34:01 Uhr
Goto Top
Aber Möglichkeiten muss es geben, denn wie machen es die anderen Entwickler?
Gar nicht. Variablen für Reboot nötig oder nicht kann man ja innerhalb der MSI abfragen und setzen.
Erstelle eine "ScheduleReboot action" mit Condition dann gibt das MSI auch deinen gewünschten Code 3010 aus.

Die ExitCodes des Windows Installers lassen sich nicht durch eigene überschreiben die sind fest definiert.
7Gizmo7
7Gizmo7 15.09.2020 um 22:19:12 Uhr
Goto Top
Zitat von @mayho33:
Meine MSI liefert aber nur 0 für SUCCESS.

Danke für eure Hilfe

Hi, und was hindert dich an der Applikation fur Exit Code 0 Soft Reboot einzustellen?

Mfg
mayho33
mayho33 16.09.2020 um 09:10:50 Uhr
Goto Top
Zitat von @7Gizmo7:
Hi, und was hindert dich an der Applikation fur Exit Code 0 Soft Reboot einzustellen?


Tatsächlich hindert mich daran, dass ich die Option dazu nicht finde face-wink

Wenn du einen kleinen Screenshot dazu hättest... ?
mayho33
mayho33 25.09.2020 um 12:03:45 Uhr
Goto Top
Zitat von @mayho33:

Zitat von @7Gizmo7:
Hi, und was hindert dich an der Applikation fur Exit Code 0 Soft Reboot einzustellen?


Tatsächlich hindert mich daran, dass ich die Option dazu nicht finde face-wink

Wenn du einen kleinen Screenshot dazu hättest... ?

Update:

OK! Die MSI meldet, dass ein Reboot gemacht werden muss. Mehr aber nicht. Windows hat anscheinend nicht mitbekommen, das ein SoftReboot ansteht. Kein 3010.

im Log schreibt der Install zwar brav..
MSI (s) (8C:30) [11:36:58:412]: Propagated Reboot to the client/parent install.
MSI (s) (8C:30) [11:36:58:412]: Value of RebootAction property is 1
MSI (s) (8C:30) [11:36:58:412]: Für Windows Installer ist ein Neustart des Systems erforderlich. Produktname: Net...

Windows weiß aber nichts davon. LOL ? Getestet habe ich das ganze dem hier:
https://adamtheautomator.com/pending-reboot-registry-windows/


Hier sind zwar alle möglichen ReturnCodes gelistet, aber nicht wie man das in der MSI umsetzen kann: https://docs.netecm.ch/launcher/troubleshooting/msi-exit-codes.html

Ich steh' am Schlauch. Bitte Hilfe!

Danke!
145916
145916 25.09.2020 um 12:07:02 Uhr
Goto Top
Ich steh' am Schlauch. Bitte Hilfe!
S. meinen letzten Kommentar.
mayho33
mayho33 25.09.2020 aktualisiert um 14:38:25 Uhr
Goto Top
Zitat von @145916:

Ich steh' am Schlauch. Bitte Hilfe!
S. meinen letzten Kommentar.

Das habe ich ja gemacht. Laut Log wird der Reboot auch schedule und das MSI zeigt es auch an. Nur Windows erfährt nie was davon. Das ist leider ungeil face-wink. Der Return der MSI ist trotzdem 0.

So kann weder Script noch SCCM wissen ob ein Reboot ansteht und entsprechend reagieren.

Normalerweise werden an den vielen möglichen Stellen in der Registry oder via WMI entweder Einträge gemacht oder Flags gesetzt um Windows mitzuteilen, dass es dieses oder jenes machen soll.

Die Action ScheduleReboot macht nichts dergleichen.

Ich würde ja gerne explizit 3010 zurück geben oder entsprechend dem:
https://docs.microsoft.com/en-us/windows/win32/msi/error-codes aber ich bin anscheinend zu doof dafür. Ich weiß einfach nicht wie und wo.
145916
Lösung 145916 25.09.2020 aktualisiert um 17:56:37 Uhr
Goto Top
Die Action ScheduleReboot macht nichts dergleichen.
Ja nee verzäll mich ned, logisch jeht dat face-smile. Dann muss ich halt wieder mal die Gehilfe aus dem Keller holen...

Also ich habe hier mal extra für dich ein Test-MSI mit InstallShield gebaut, direkt mal mit der folgender Custom Property (ISSCHEDULEREBOOT) versehen (dann ist keine extra action nötig, kannst du aber selbstverständlich aus jeder custom action heraus auch auf 1 setzen):

screenshot

Dann mal mit das msi /norestart Parameter installiert:

screenshot

Voilà da hast du dein 3010, Ergo geht wie schon erwähnt face-smile. Test-OS übrigens = Windows 10 2004

Fred solved. 🐟

eagle
mayho33
mayho33 25.09.2020 aktualisiert um 21:28:37 Uhr
Goto Top
Zitat von @145916:

Die Action ScheduleReboot macht nichts dergleichen.
Ja nee verzäll mich ned, logisch jeht dat face-smile. Dann muss ich halt wieder mal die Gehilfe aus dem Keller holen...

Also ich habe hier mal extra für dich ein Test-MSI mit InstallShield gebaut, direkt mal mit der folgender Custom Property (ISSCHEDULEREBOOT) versehen (dann ist keine extra action nötig, kannst du aber selbstverständlich aus jeder custom action heraus auch auf 1 setzen):

screenshot

Dann mal mit das msi /norestart Parameter installiert:

screenshot

Voilà da hast du dein 3010, Ergo geht wie schon erwähnt face-smile. Test-OS übrigens = Windows 10 2004

Fred solved. 🐟

eagle

OK! Ja! Vielleicht zu kompliziert gedacht. Danke jedenfalls!!

Aber warum bitte, in herrgottsnamen, kreizdeifl einianond, funkt das so nicht?

schreboot 1

schreboot 2

schreboot 3


Ist vermutlich wieder so ein "stupid deferred wrong sequence" Ding.

Dir auch eine schönes WE!


EDIT:

War tatsächlich zu spät! MSI kann im Deferred BlaBlaBla... das Property nicht auswerten wenn.. Eh schon wissen!

Danke nochmal!

Grüße!