Wie bekomme ich den return-code aus einer CustomAction?
Habe ich folgende CustomAction in meinem Projekt:
<CustomAction Id="InstallDriver"
Return="check"
Execute="deferred"
Impersonate="no"
FileKey="FileDriverInst"
ExeCommand="-install" />
<InstallExecuteSequence>
<Custom Action="InstallDriver" Before="InstallServices" />
</InstallExecuteSequence>
Dem Programm, das installiert den Treiber produziert nützlich, return-codes, zum Beispiel, wenn die installation ist fehlgeschlagen, da das system muss neu gestartet werden, nach einer vorherigen Treiber deinstallieren.
Wenn derzeit alles andere als erfolgreich zurückgegeben wird, bekomme ich einen dialog, die sagen, 'Ein Programm ausführen, das als Teil der Installation nicht zu Ende als erwartet." und die installation schlägt fehl. Dies ist nicht optimal.
Wie kann ich und handle return-codes?
- Dein ganzes design ist nicht optimal. Es ist der Prozess, um Windows Installer und nicht deklarativ. Es gibt bessere Muster für die Installation der Treiber.
- Die Wix-basierten installer für dieses Paket müssen die gleichen tools verwenden, wie unsere anderen Installations-Mechanismen, ich fürchte, ich habe nicht das sagen.
- Dann gibt es nichts, was ich für Sie tun kann. Das ist einfach die Art MSI-Griffe EXE-Datei aufruft. Sie würde haben schreiben Sie Ihre eigenen benutzerdefinierten Aktionen, um wickeln Sie die EXE-Datei aufrufen, und dann interpretieren Sie die Fehlerursache. Für mich ist das einfach fügt noch ein anderer Fehler zeigen.
- das sollte gepostet werden als Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Windows Installer nicht unterstützt handling benutzerdefinierte Aktion, die Werte zurückgeben.
Für eine EXE-Datei benutzerdefinierte Aktion ein nicht-null Rückgabewert wird als Fehler interpretiert und die installation Stoppt. Nur eine win32-DLL oder VBScript custom action ändern kann, das Verhalten bei der installation durch seine return-code, aber es ist immer noch sehr begrenzt.
Wenn Sie möchten, den Computer neu starten nach der Installation können Sie die NEUSTART Eigenschaft.
Hinzugefügt, als "Antwort" auf Anfrage:
Ihre ganze design ist nicht optimal. Es ist der Prozess, um Windows Installer und nicht deklarativ. Es gibt bessere Muster für die Installation der Treiber.
Das ist einfach die Art MSI-Griffe EXE-Datei aufruft. Sie würde haben schreiben Sie Ihre eigenen benutzerdefinierten Aktionen, um wickeln Sie die EXE-Datei aufrufen, und dann interpretieren Sie die Fehlerursache. Für mich ist das einfach fügt noch ein anderer Fehler zeigen.
Können Sie nicht bekommen ein return-code von einer CustomAction, aber in einer Runde über Art und Weise, die Sie festlegen können, was das return-code würde auf eine Eigenschaft. Das könnte auch die gleiche Sache wie immer den return-code.
Müssen Sie es in den Skript - /dll-Ihre benutzerdefinierte Aktion ausführen. Andernfalls ist der Rückgabewert zeigt nur, in den log.
Zum Beispiel, wenn Sie Immobilien wie
Dann innerhalb von VBScript (oder Jscript) können Sie den Wert der Eigenschaft wie folgt:
VBScript
Zunächst, es ist null. Sie können es in VBScript so:
Einmal zurück in Ihre WiX .wxs-Datei, wenn Sie den Wert Ihrer Immobilie, Sie ist jetzt 4. Man könnte es sogar benutzen, in CDATA-tags.
Beispielsweise laichen nur ein dialog, wenn MyCode ist gleich 4.