Hei guder,
Jeg har nylig brukt Setup Project for å pakke programmet, og det heter A. På grunn av prosjektkrav måtte jeg installere en installasjonspakke B pakket av InstallShield under installasjonen av A. I dette. AfterInstall og this.BeforeUninstall parts legger til koden for henholdsvis "Install" og "Reverse Install" B. Den kunne imidlertid ikke utføres jevnt, og setup.log generert av B fikk ResultCode=-3, men årsaken er ukjent...
Jeg ber styreguden om hjelp, dette problemet har plaget lillebroren min lenge, og jeg har ikke klart å løse det... Takk!!
I den følgende koden plasseres koden i InstallerHelper_AfterInstall og InstallerHelper_BeforeUninstall i det nyopprettede C#-konsollprogrammet, men det kan kjøres normalt. Og WaitforExit() kan også sette seg fast jevnt, og B-installasjonspakken kan også kjøres jevnt, ResultCode=0.
Koden er som følger: -- ved bruk av System; ved bruk av System.Collections; ved bruk av System.Collections.Generic; ved bruk av System.ComponentModel; ved bruk av System.Configuration.Install; ved bruk av System.Linq; bruk av System.Threading.Tasks; ved bruk av System.Configuration; ved bruk av System.Windows; bruk av System.IO; bruk av System.Diagnostics; bruk av System.Threading;
navnerom FRWebService
{ [RunInstaller(true)] offentlig partiell klasse InstallerHelper : Installer { offentlig InstallerHelper() {
InitializeComponent();
Dette. BeforeInstall += ny InstallEventHandler(InstallerHelper_BeforeInstall); Dette. AfterInstall += ny InstallEventHandler(InstallerHelper_AfterInstall);
Dette. BeforeUninstall += ny InstallEventHandler(InstallerHelper_BeforeUninstall); Dette. AfterUninstall += ny InstallEventHandler(InstallerHelper_AfterUninstall); }
privat void InstallerHelper_BeforeUninstall(objektavsender, InstallEventArgs e) { Prøv { Streng arg = "/s /uninst"; Process p = Process.Start ("C:\\Program Files\\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit();
} catch (Unntak f.eks.) {
} }
private void InstallerHelper_BeforeInstall(objektavsender, InstallEventArgs e) {
}
private void InstallerHelper_Committing(objektavsender, InstallEventArgs e) {
}
privat void InstallerHelper_Committed(objektavsender, InstallEventArgs e) {
}
private void InstallerHelper_AfterInstall(objektavsender, InstallEventArgs e) { Prøv { Streng arg = "/s"; Process p = Process.Start ("C:\\Program Files\\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } catch (Unntak f.eks.) {
} }
privat void InstallerHelper_AfterUninstall(objektavsender, InstallEventArgs e) {
}
Kode som skal utføres ved installasjon av applikasjonen public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostikk.Debugger.Launch(); basen. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Installerer applikasjon..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostikk.Debugger.Launch(); basen. Avinstaller (stateSaver); System.Windows.Forms.MessageBox.Show("Avinstallerer applikasjon..."); }
}
} --
|