Hallo Götter,
Ich habe kürzlich Setup Project verwendet, um das Programm zu paketieren, und es heißt A. Aufgrund von Projektanforderungen musste ich während der Installation von A ein Installationspaket B installieren, das von InstallShield gepackt wurde. In diesem hier. AfterInstall und this.BeforeUninstall Parts fügen jeweils den Code "Install" und "Reverse Install" B hinzu. Allerdings konnte sie nicht reibungslos ausgeführt werden, und die von B erzeugte setup.log erhielt ResultCode=-3, aber der Grund ist unbekannt...
Ich flehe den Gott des Vorstands um Hilfe an, dieses Problem beschäftigt meinen kleinen Bruder schon lange, und ich konnte es nicht lösen... Vielen Dank!!
Im folgenden Code wird der Code im InstallerHelper_AfterInstall und InstallerHelper_BeforeUninstall im neu erstellten C#-Konsolenprogramm eingefügt, aber es kann normal ausgeführt werden. Und WaitforExit() kann ebenfalls flüssig hängen bleiben, und das B-Installationspaket kann ebenfalls reibungslos ausgeführt werden, ResultCode=0.
Der Code lautet wie folgt: -- mit System; unter Verwendung von System.Collections; mit System.Collections.Generic; mit System.ComponentModel; mit System.Configuration.Install; mit System.Linq; unter Verwendung von System.Threading.Tasks; unter Verwendung von System.Configuration; mit System.Windows; mit System.IO; mit System.Diagnostics; unter Verwendung von System.Threading;
Namensraum FRWebService
{ [RunInstaller(true)] öffentliche partielle Klasse InstallerHelper : Installer { öffentlicher InstallerHelper() {
InitializeComponent();
das. BeforeInstall += neuer InstallEventHandler(InstallerHelper_BeforeInstall); das. AfterInstall += neuer InstallEventHandler(InstallerHelper_AfterInstall);
das. BeforeUninstall += neuer InstallEventHandler(InstallerHelper_BeforeUninstall); das. AfterUninstall += neuer InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(Objektsender, InstallEventArgs e) { Versuch es { String arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\\Test\\\setup_io.exe", arg); p.WaitForInputIdle(); p.Warten auf Ausgang();
} catch (Ausnahme z. B.) {
} }
private void InstallerHelper_BeforeInstall(Objektsender, InstallEventArgs e) {
}
private void InstallerHelper_Committing(Objektsender, InstallEventArgs e) {
}
private void InstallerHelper_Committed(Objektsender, InstallEventArgs e) {
}
private void InstallerHelper_AfterInstall(object sender, InstallEventArgs e) { Versuch es { String arg = "/s"; Process p = Process.Start("C:\\Program Files\\\Test\\\setup_io.exe", arg); p.WaitForInputIdle(); p.Warten auf Ausgang(); } catch (Ausnahme z. B.) {
} }
private void InstallerHelper_AfterUninstall(Objektsender, InstallEventArgs e) {
}
Code, der zum Zeitpunkt der Installation der Anwendung ausgeführt wird public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostik.Debugger.Start(); Basis. Installieren(stateSaver); System.Windows.Forms.MessageBox.Show("Installation der Anwendung..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostik.Debugger.Start(); Basis. Uninstallation (stateSaver); System.Windows.Forms.MessageBox.Show("Anwendung deinstallieren..."); }
}
} --
|