Ahoj bohové,
Nedávno jsem používal Setup Project k balení programu a jmenuje se A. Kvůli požadavkům projektu jsem musel během instalace A nainstalovat instalační balíček B od InstallShield. V tomhle. AfterInstall a this.BeforeUninstall přidávají kódy "Install" a "Reverse Install" B. Nicméně nešlo jej spouštět hladce a setup.log generovaný B získal ResultCode=-3, ale důvod není znám...
Prosím rady o pomoc, tento problém trápí mého mladšího bratra už dlouho a já ho nedokázal vyřešit... Děkuju!!
V následujícím kódu je kód v InstallerHelper_AfterInstall a InstallerHelper_BeforeUninstall umístěn do nově vytvořeného C# konzolového programu, ale může běžet normálně. WaitforExit() se také může zaseknout plynule a instalační balíček B může být také spuštěn plynule, ResultCode=0.
Kód je následující: -- pomocí System; pomocí System.Collections; pomocí System.Collections.Generic; pomocí System.ComponentModel; pomocí System.Configuration.Install; pomocí System.Linq; pomocí System.Threading.Tasks; pomocí System.Configuration; pomocí System.Windows; pomocí System.IO; pomocí System.Diagnostics; pomocí System.Threading;
Jmenný prostor FRWebService
{ [RunInstaller(true)] public partial class InstallerHelper : Installer { public InstallerHelper() {
InitializeComponent();
Přesně tak. BeforeInstall += nový InstallEventHandler(InstallerHelper_BeforeInstall); Přesně tak. AfterInstall += nový InstallEventHandler(InstallerHelper_AfterInstall);
Přesně tak. BeforeUninstall += new InstallEventHandler(InstallerHelper_BeforeUninstall); Přesně tak. AfterUninstall += nový InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { zkus { Struna arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit();
} chytit (Výjimka ex) {
} }
private void InstallerHelper_BeforeInstall(object sender, InstallEventArgs e) {
}
private void InstallerHelper_Committing(object sender, InstallEventArgs e) {
}
private void InstallerHelper_Committed(object sender, InstallEventArgs e) {
}
private void InstallerHelper_AfterInstall(object sender, InstallEventArgs e) { zkus { Struna arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } chytit (Výjimka ex) {
} }
private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Kód, který se provádí při instalaci aplikace public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); základny. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Instalace aplikace..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); základny. Odinstalovat (stateSaver); System.Windows.Forms.MessageBox.Show("Odinstalace aplikace..."); }
}
} --
|