Hej gudar,
Jag har nyligen använt Setup Project för att paketera programmet, och det heter A. På grund av projektkrav var jag tvungen att installera ett installationspaket B som paketerats av InstallShield under installationen av A. I detta. AfterInstall och this.BeforeUninstall parts lägger till koden för "Install" respektive "Reverse Install" B. Den kunde dock inte utföras smidigt, och den setup.log som genererades av B gav ResultCode=-3, men orsaken är okänd...
Jag ber styrelsens gud om hjälp, det här problemet har plågat min lillebror länge, och jag har inte kunnat lösa det... Tack!!
I följande kod placeras koden i InstallerHelper_AfterInstall och InstallerHelper_BeforeUninstall i det nyskapade C#-konsolprogrammet, men det kan köras normalt. Och WaitforExit() kan också fastna smidigt, och B-installationspaketet kan också köras smidigt, ResultCode=0.
Koden är följande: -- med System; med hjälp av System.Collections; med System.Collections.Generic; med System.ComponentModel; med System.Configuration.Install; med System.Linq; använda System.Threading.Tasks; med System.Configuration; med System.Windows; med hjälp av System.IO; med System.Diagnostics; med System.Threading;
namnrymden FRWebService
{ [RunInstaller(true)] publik partiell klass InstallerHelper : Installer { publik InstallerHelper() {
InitializeComponent();
Exakt så. BeforeInstall += ny InstallEventHandler(InstallerHelper_BeforeInstall); Exakt så. AfterInstall += ny InstallEventHandler(InstallerHelper_AfterInstall);
Exakt så. BeforeUninstall += ny InstallEventHandler(InstallerHelper_BeforeUninstall); Exakt så. AfterUninstall += ny InstallEventHandler(InstallerHelper_AfterUninstall); }
privat void InstallerHelper_BeforeUninstall(objektavsändare, InstallEventArgs e) { Försök { Sträng arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit();
} catch (Undantag t.ex.) {
} }
privat void InstallerHelper_BeforeInstall(objektavsändare, InstallEventArgs e) {
}
privat void InstallerHelper_Committing(objektavsändare, InstallEventArgs e) {
}
privat void InstallerHelper_Committed(objektavsändare, InstallEventArgs e) {
}
privat void InstallerHelper_AfterInstall(objektavsändare, InstallEventArgs e) { Försök { Sträng arg = "/s"; Process p = Process.Start("C:\\Program Files\\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } catch (Undantag t.ex.) {
} }
privat void InstallerHelper_AfterUninstall(objektavsändare, InstallEventArgs e) {
}
Kod att utföra vid installationstillfället public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostik.Debugger.Start(); basen. Installera (stateSaver); System.Windows.Forms.MessageBox.Show("Installera applikation..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostik.Debugger.Start(); basen. Avinstallera (stateSaver); System.Windows.Forms.MessageBox.Show("Avinstallera applikation..."); }
}
} --
|