2012-04-10 10 views
0

Ich habe ein Installationsprogramm erstellt, das ein anderes Installationsprogramm startet (in der Commit-Phase) (die Dateien setup.exe und .msi sind platziert in dem ‚BoardsControllerSetup‘ Verzeichnis)Beim Starten eines Installationsprogramms (setup.exe) in einem anderen Installationsprogramm erscheint das Programm nicht in der Liste installierter Programme.

auf meinem eigenen, Entwicklungssystem (Lauf w7, professionell) Dandy

Testing alles auf einer anderen W7 Maschine, als Benutzer mit Grundrechten angemeldet (ich bin ziemlich sicher, dass Berechtigungen sind schuld), die zweite Anwendung wird nicht in der Liste der installierten Programme erscheinen (noch für die Sache wird es ihr Symbol auf dem Desktop erstellen).

(Später muss ich die zweite Anwendung von der ersten starten, und so würde ich gerne in der Lage sein, seinen Installationspfad aus der Registrierung Ich könnte immer versuchen, eine Registrierungszeichenfolge mit der Installation zu erstellen Pfad .. aber jetzt bin ich eigentlich neugierig darauf, wie ich das direkt beheben kann).

Alle und alle helfen geschätzt.

Shaun

 System.Diagnostics.Process cBoardsControllerSetupProcess = new System.Diagnostics.Process(); 
     startInfo = new System.Diagnostics.ProcessStartInfo(); 
     startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
     startInfo.WorkingDirectory = Path.Combine(sInstallDir, "BoardsControllerSetup"); 
     startInfo.FileName = "setup.exe"; 
     cBoardsControllerSetupProcess.StartInfo = startInfo; 
     cBoardsControllerSetupProcess.Start(); 
+0

Komm zurück, wenn du feststellst, ob es ein Benutzerberechtigungsproblem ist. Wir können unvollständige Fragen nicht beantworten. –

+0

Coole Frage. Haben Sie die MSI-Protokollierung aktiviert, den Exit-Code der Anwendung überprüft und spezielle Schalter für Berechtigungen verwendet? –

Antwort

0

Windows Installer nicht unterstützt zwei MSI-basierte Installationen zur gleichen Zeit ausgeführt werden. Das zweite Installationsprogramm schlägt wahrscheinlich fehl, weil die Hauptinstallation gerade ausgeführt wird. Die Tatsache, dass es an einer Maschine arbeitete, war nur ein zeitlicher Zufall.

Die einzige (nicht veraltete) Möglichkeit, eine andere MSI-basierte Installation von InstallExecuteSequence auszuführen, besteht darin, sie nach InstallFinalize mit den Flags msidbCustomActionTypeAsync and msidbCustomActionTypeContinue zu planen. Auf diese Weise wird es ausgeführt, nachdem die Hauptinstallation abgeschlossen ist.

Bitte beachten Sie, dass die empfohlene Vorgehensweise für die Installation vorhandener Pakete darin besteht, sie als Voraussetzungen hinzuzufügen. Einige kommerzielle Setup-Tools unterstützen featurebasierte Voraussetzungen, die vom MSI gesteuert werden. Die meisten Setup-Tools lassen jedoch nur die Voraussetzungen zu, die von einem EXE-Bootstrapper verarbeitet werden.

+0

Danke für die ausführliche Antwort Mann. – Oyiwai

+0

kleines Update: Ich habe am Ende nur eine Batch-Datei verwendet, um alle meine erforderlichen Installationen nacheinander auszuführen - das ist also eine weitere einfache Lösung ohne Probleme. – Oyiwai