Hej guder,
Jeg har for nylig brugt Setup Project til at pakke programmet, og det hedder A. På grund af projektkrav måtte jeg installere en installationspakke B, pakket af InstallShield, under installationen af A. I dette. AfterInstall og this.BeforeUninstall parts tilføjer koden til henholdsvis "Install" og "Reverse Install" B. Dog kunne det ikke udføres gnidningsfrit, og den setup.log genereret af B gav ResultCode=-3, men årsagen er ukendt...
Jeg beder bestyrelsesguden om hjælp, dette problem har plaget min lillebror i lang tid, og jeg har ikke kunnet løse det... Tak!!
I den følgende kode placeres koden i InstallerHelper_AfterInstall og InstallerHelper_BeforeUninstall i det nyoprettede C#-konsolprogram, men det kan køre normalt. Og WaitforExit() kan også sidde fast glat, og B-installationspakken kan også udføres problemfrit, ResultCode=0.
Koden er som følger: -- ved brug af System; ved brug af System.Collections; ved brug af System.Collections.Generic; ved brug af System.ComponentModel; ved brug af System.Configuration.Install; ved brug af System.Linq; brug af System.Threading.Tasks; ved brug af System.Configuration; ved brug af System.Windows; ved brug af System.IO; ved brug af System.Diagnostics; ved brug af System.Threading;
navnerum FRWebService
{ [RunInstaller(true)] offentlig partiel 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(objektafsender, 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 (Undtagelse f.eks.) {
} }
privat void InstallerHelper_BeforeInstall(objektafsender, InstallEventArgs e) {
}
privat void InstallerHelper_Committing(objektafsender, InstallEventArgs e) {
}
privat void InstallerHelper_Committed(objektafsender, InstallEventArgs e) {
}
privat void InstallerHelper_AfterInstall(objektafsender, InstallEventArgs e) { Prøv { Streng arg = "/s"; Process p = Process.Start("C:\\Program Files\\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } catch (Undtagelse f.eks.) {
} }
privat void InstallerHelper_AfterUninstall(objektafsender, InstallEventArgs e) {
}
Kode til at udføre ved installation af applikationen public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostik.Debugger.Start(); basen. Installer (stateSaver); System.Windows.Forms.MessageBox.Show("Installerer applikation..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostik.Debugger.Start(); basen. Afinstaller (stateSaver); System.Windows.Forms.MessageBox.Show("Afinstallerer applikation..."); }
}
} --
|