Hallo goden,
Ik heb Setup Project de laatste tijd gebruikt om het programma te verpakken, en het heet A. Vanwege projectvereisten moest ik tijdens de installatie van A een installatiepakket B installeren, verpakt door InstallShield. In dit. AfterInstall en this.BeforeUninstall voegen onderdelen respectievelijk de code van "Installeren" en "Reverse Install" B toe. Het kon echter niet soepel worden uitgevoerd, en de door B gegenereerde setup.log leverde ResultCode=-3 op, maar de reden is onbekend...
Ik smeek de raad van bestuur om hulp, dit probleem heeft mijn kleine broertje al lang beziggehouden, en ik heb het niet kunnen oplossen... Bedankt!!
In de volgende code wordt de code in de InstallerHelper_AfterInstall en InstallerHelper_BeforeUninstall geplaatst in het nieuw aangemaakte C#-consoleprogramma, maar het kan normaal draaien. En WaitforExit() kan ook soepel vastlopen, en het installatiepakket B kan ook soepel worden uitgevoerd, ResultCode=0.
De code is als volgt: -- met behulp van System; met behulp van System.Collections; met behulp van System.Collections.Generic; gebruikmakend van System.ComponentModel; met behulp van System.Configuration.Install; met behulp van System.Linq; gebruik van System.Threading.Tasks; gebruikmakend van System.Configuration; met behulp van System.Windows; met System.IO; gebruikmakend van System.Diagnostics; gebruik van System.Threading;
naamruimte FRWebService
{ [RunInstaller(true)] publieke partiële klasse InstallerHelper : Installer { publieke InstallerHelper() {
InitializeComponent();
dit. BeforeInstall += nieuwe InstallEventHandler(InstallerHelper_BeforeInstall); dit. AfterInstall += nieuwe InstallEventHandler(InstallerHelper_AfterInstall);
dit. BeforeUninstall += nieuwe InstallEventHandler(InstallerHelper_BeforeUninstall); dit. AfterUninstall += nieuwe InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { Probeer het { String arg = "/s /uninst"; Process p = Process.Start ("C:\\Program Files\\\Test\\\setup_io.exe", arg); p.WachtOpInputIdle(); p.WachtOpUitlaat();
} vangen (Uitzondering bijv.) {
} }
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) { Probeer het { String arg = "/s"; Process p = Process.Start ("C:\\Program Files\\\Test\\\setup_io.exe", arg); p.WachtOpInputIdle(); p.WachtOpUitlaat(); } vangen (Uitzondering bijv.) {
} }
private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Code die op het moment van installeren van de applicatie moet worden uitgevoerd public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); basis. Installeren (stateSaver); System.Windows.Forms.MessageBox.Show("Applicatie installeren..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); basis. Uninstall(stateSaver); System.Windows.Forms.MessageBox.Show("Applicatie verwijderen..."); }
}
} --
|