Windows installer: Error 1001, CustomAction _xxxxx.installieren zurückgegeben tatsächlichen Fehlercode 1603
Frage:
Habe ich erstellt einen installer für eine windows-Dienst mit Visual Studio 2012 und InstallShield.
Der service gut läuft.
Der installer läuft problemlos auf meinem Entwicklungsrechner (windows 8 64 bit) und meinem virtuellen XP-Rechner (32 bit).
Aber auf Windows Server 2008 R2 den gleichen installer bekommt "Fehler 10001".
Keine weiteren Informationen whatsover.
Die folgenden Informationen wurden im eventlog:
Product: DbBackupServiceSetup -- Error 1001.
(NULL)
(NULL)
(NULL)
(NULL)
(NULL)
the message resource is present but the message is not found in the string/message table
Wenn ich manuell installieren mit:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "D:\Program Files\Test\DbBackupService.exe"
Dann funktioniert es problemlos, auch auf Windows Server 2008 R2...
Ich habe eine Installationsdatei für 32-bit-ausführbare Dateien und eine mit 64 bit-Programme, aber ich bekomme diese Fehlermeldung auf beiden...
Habe ich versucht, die Ausführung der msi-Protokollierung aktiviert
msiexec /i "D:\Install\DISK1\DbBackupServiceSetup.msi" /Lv "D:\example.log"
Den ersten Hinweis auf einen Fehler in der logfile ist hier:
Created Custom Action Server with PID 3932 (0xF5C).
MSI (s) (C0:74) [14:26:28:065]: Running as a service.
MSI (s) (C0:74) [14:26:28:080]: Hello, I'm your 32bit Elevated custom action server.
MSI (s) (C0!14) [14:26:33:681]:
MSI (s) (C0:E8) [14:26:33:681]: Leaked MSIHANDLE (16) of type 790531 for thread 3348
MSI (s) (C0:E8) [14:26:33:681]: Note: 1: 2769 2: _B384C869AD7BC0C39F5780609620645B.install 3: 1
Info 2769. Custom Action _B384C869AD7BC0C39F5780609620645B.install did not close 1 MSIHANDLEs.
CustomAction _B384C869AD7BC0C39F5780609620645B.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 14:26:33: InstallFinalize. Return value 3.
MSI (s) (C0:F0) [14:26:33:697]: User policy value 'DisableRollback' is 0
MSI (s) (C0:F0) [14:26:33:697]: Machine policy value 'DisableRollback' is 0
Ich verstehe es nicht.
Der gleiche installer läuft problemlos auf andere Maschinen.
Alle benutzerdefinierten Aktionen sind verpackt im inneren try-catch, das system-Konto hat vollen Zugriff auf das Dateisystem, und es ist nicht ein Netzwerk-share.
Und installieren Sie den Dienst mit installutil funktioniert, also muss es ein Fehler im installer selbst.
Mir wie es aussieht ist es Berufung
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "D:\Program Files\test\DbBackupService.exe"
statt
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe "D:\Program Files\test\DbBackupService.exe"
und daher bekommt schlechte image Ausnahme.
Jedoch, wenn das der Fall ist, was ich nicht verstehe ist, warum bekomme ich diesen Fehler mit beiden, den 32 und 64 bit executables...
Liegt es nahe, dass das problem InstallShield selbst...
Oh, ich bin mit der remote-desktop - (mstsc.exe) mit dem server verbinden, falls das einen Unterschied macht, und ich habe keinen Zugriff auf die server direkt, so kann ich nicht versuchen, wenn es ein Befehl mstsc ein problem.
InformationsquelleAutor Stefan Steiger | 2013-05-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehlercode 1001 IMMER bedeutet, dass ein Fehler in der Installer-Klasse benutzerdefinierte Aktion. InstallShield ist lediglich konsumieren /- hosting, wie Sie gerichtet. Installer-Klasse benutzerdefinierte Aktionen sind notorisch spröde und außerhalb des Prozesses ausführen, so dass Sie sehr wenig Protokollierung.
Anstatt die benutzerdefinierte Aktion verwenden, sollten Sie die native Windows-Installer ServiceInstall und ServiceConfigure Tabellen als ausgesetzt von InstallShield unter die erweiterte Komponente von Einstellungen. Eine Komponente erstellen, fügen Sie Ihre service-EXE-Datei, um es als eine Schlüssel-Datei und definieren Sie dann die service-meta.
Erste schlage ich vor, lediglich das erstellen der installieren und dann starten Sie es von hand nach installieren. Sobald das funktioniert fügen Sie die ServiceControl Informationen, so dass der installer macht das automatisch. Spülen Sie und wiederholen Sie auf einer VM.
Wenn Sie eine Fehlermeldung erhalten, 1920, wenn das Installationsprogramm versucht, den Dienst zu starten, das ist immer ein service-problem. Profil ist es, das problem zu verstehen und dann entweder korrigieren Sie den code oder fixieren Sie das Installationsprogramm, wenn es eine Abhängigkeit fehlt.
Ich bin immer Error 1001 und habe nichts in Benutzerdefinierte Aktionen :/
Ja, Sie tun. Ich Wette, Sie $100, die Sie tun.
Ich lief in dieses problem und konnte es lösen durch entfernen eines Ereignis-log-installer, die in meinem Projekt was ich davon ausgehen, verursacht eine benutzerdefinierte Aktion aus.
"Installateure" (überladene leider) in diesem Zusammenhang benutzerdefinierte Aktionen. Sie sind auch ein Beispiel dafür, das Rad neu erfinden mit einer minderwertigen Lösung. Ereignis-Quellen, die nur erfordert ein paar registry-Einträge vorhanden sind. Benutzerdefinierte Aktionen sind nicht angebracht.
InformationsquelleAutor Christopher Painter
Gelöst, indem er meinen eigenen installer.
Alles, was ich tun einbetten, der die Ausgabe des service-Projekt, die als Ressourcen in das installer-Projekt, und schreiben Sie Sie zu einem spezifizierten Ordner.
Dann Lauf ich installutil programmgesteuert installieren der service einwandfrei, und dann funktioniert es.
Der einzige Nachteil im Vergleich zu einem echten installer ist, so gibt es keinen uninstaller, aber ich weiß nicht mehr zu kümmern. Wenn es die Tage schneller zu Rollen Sie Ihre eigenen installer als mit InstallShield, dann gibt es etwas falsch mit InstallShield.
Das Rad neu erfinden kann zu Fehlern führen, aber zumindest sind Sie mir zu machen und lösbar ist.
Hier die Lösung, im Falle dass es ist nützlich, um jemand anderes.
Maler: ja, das ist ein hack. Aber es existiert, weil ich nicht finden konnte, die Lösung in 2 ganze Tage. Und es macht das gleiche, installutil.exe tut. Und es funktioniert! Die einzige schlechte Praxis war nicht zu geben, auf die InstallShield-nach den ersten paar Stunden von Problemen Lösung der Probleme kann nur gelöst werden, Dank google.
In diesem Tag und Alter der zu Komplex installer-Technologien hier einen Tag Weg und am nächsten, insbesondere in form von Visual Studio Installer-Projekt-Vorlagen; hässlich, unübersichtlich, fehleranfällig XML-basierte "installer-tech" wie Wix; kann man sehen den Wert der Einfachheit Ihrer Lösung. Seine Gründe, wie ich viel lieber den Weg, OSX tut.
Investieren Sie die Zeit in lernen es und Sie können feststellen, es ist wirklich nicht schwer.
Maler: ja, stimmt, aber geht davon aus, dass Sie die Zeit haben, dies zu tun. Übrigens, das problem war wahrscheinlich verursacht durch den Dienst nicht ordnungsgemäß beendet (aufgrund von Windows-Einstellung status auf "beendet", bevor man ruft "stop", dann stoppen, verfängt sich in einer Endlosschleife).
InformationsquelleAutor Stefan Steiger
Gelöst durch überschreiben alle Methoden der Benutzerdefinierten Aktion in meinem Installer-Klasse. Nach vielen versuchen,endlich funktioniert es wie ein Charme.
InformationsquelleAutor Siva Raman