2017-05-30 4 views
0

Ich bin die Erstellung von MSI-Installer mit Wixsharp mit der unbeaufsichtigten Installation mit der Befehlszeile ohne Benutzeroberfläche. Ich habe viele benutzerdefinierte Aktionsmethoden, die den folgenden ähneln, um vorausgesetzte Bedingungen zu überprüfen. Ich möchte die Benutzer warnen, wenn die Voraussetzungen nicht erfüllt sind.Ausführen von MSI-Installer-Befehlszeile

var project = new Project("ProductName", 
    new ManagedAction(new Id("OSVersion"), Check.CheckOSVersion, Return.check, When.Before, Step.InstallInitialize, Condition.NOT_Installed)); 

Benutzerdefinierte Aktionsmethoden gibt ActionResult.Failure zurück, wenn die Bedingungen nicht erfüllt sind.

Meine Batch-Skript unter

start /wait msiexec /i Installer.msi /qn /l*v installerlog.log 

if "%errorlevel%" == "1013" goto err 
if "%errorlevel%" == "1603" goto err 

:err 
echo "Error: Msiexec failed with errorlevel = %errorlevel%" 
pause 
exit /b %errorlevel% 

Ist es möglich, die MSI-Installer Rückkehr benutzerdefinierten Fehlercode und benutzerdefinierte Fehlermeldungen wie „OS Version ungültig“ und zeigt das gleiche in der Befehlszeile zu machen. ?

Antwort

0

Sie können den msiexec-Exitcode nicht ändern - er gibt einen Windows-Wert zurück, den Sie nicht anpassen können.

Benutzerdefinierte Fehlermeldungen werden normalerweise mit einer benutzerdefinierten Aktion ausgeführt, die MsiProcessMessage mit INSTALLMESSAGE_ERROR aufruft, und sie würden auch in das MSI-Protokoll gehen.

Ich weiß nicht genau, was die Anzeige des Fehlers in der Befehlszeile bedeutet, aber eine automatische Installation ist wirklich eine unbeaufsichtigte Installation und die Installation wird nichts angezeigt. In welcher Weise möchten Sie eine unbeaufsichtigte Installation, sondern auch eine Nachricht anzeigen, so dass sie nicht geräuschlos ist? Funktionieren die/qb-Optionen, sodass Sie Fortschritte und Fehler sehen?

+0

Ich bin neu für Installateure und meine Frage kann falsch sein. Die Option/qb öffnet einen separaten Dialog und zeigt den Wert von session.Message() an. Ich möchte das gleiche in der Befehlszeile ohne Dialoge anzeigen. Gibt es eine Möglichkeit, den INSTALL_MESSAGE_ERROR zurückzugeben, damit er vom Stapelscript erfasst werden kann? Außerdem verwende ich die WixSharp-Bibliothek in .NET, um die Installationsprogramme zu erstellen. –