Ciao dei,
Ultimamente ho usato Setup Project per impacchettare il programma, e si chiama A. A causa dei requisiti del progetto, ho dovuto installare un pacchetto di installazione B confezionato da InstallShield durante l'installazione di A. In questo. AfterInstall e questo. Le parti BeforeUninstall aggiungono rispettivamente il codice "Installa" e "Installazione inversa" B. Tuttavia, non è stato eseguito senza intoppi e il setup.log generato da B ha ottenuto ResultCode=-3, ma la ragione è sconosciuta...
Supplico il dio del consiglio di aiutarmi, questo problema ha turbato mio fratellino da molto tempo, e non sono riuscito a risolverlo... Grazie!!
Nel codice seguente, il codice nel InstallerHelper_AfterInstall e InstallerHelper_BeforeUninstall viene inserito nel nuovo programma console C# creato, ma può funzionare normalmente. E anche WaitforExit() può bloccarsi senza problemi, e anche il pacchetto di installazione B può essere eseguito senza problemi, ResultCode=0.
Il codice è il seguente: -- usando Sistema; usando System.Collections; usando System.Collections.Generic; utilizzando System.ComponentModel; usando System.Configuration.Install; usando System.Linq; usando System.Threading.Tasks; usando System.Configuration; usando System.Windows; usando System.IO; utilizzando System.Diagnostics; usando System.Threading;
Spazio dei nomi FRWebService
{ [RunInstaller(true)] classe parziale pubblica InstallerHelper : Installer { InstallerHelper pubblico() {
InitializeComponent();
Questo. PrimaInstallare += nuovo InstallEventHandler(InstallerHelper_BeforeInstall); Questo. AfterInstall += nuovo InstallEventHandler(InstallerHelper_AfterInstall);
Questo. PrimaDeUninstall += nuovo InstallEventHandler(InstallerHelper_BeforeUninstall); Questo. AfterUninstall += nuovo InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { prova { String arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.AspettaProInputIdle(); p.AspettaUscita();
} catch (eccezione ex) {
} }
private void InstallerHelper_BeforeInstall(object sender, InstallEventArgs e) {
}
private void InstallerHelper_Committing(object sender, InstallEventArgs e) {
}
void privato InstallerHelper_Committed(object sender, InstallEventArgs e) {
}
void privato InstallerHelper_AfterInstall(object sender, InstallEventArgs e) { prova { String arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.AspettaProInputIdle(); p.AspettaUscita(); } catch (eccezione ex) {
} }
privato void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Codice da eseguire al momento dell'installazione dell'applicazione sovrascrittura pubblica void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); base. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Installazione applicazione..."); }
override pubblico void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); base. Disinstalla (stateSaver); System.Windows.Forms.MessageBox.Show("Disinstallazione dell'applicazione..."); }
}
} --
|