Olá deuses,
Tenho usado o Setup Project para empacotar o programa recentemente, e ele se chama A. Devido aos requisitos do projeto, precisei instalar um pacote de instalação B empacotado pelo InstallShield durante a instalação do A. Nesse caso. AfterInstall e this.BeforeUninstall partes adicionam o código "Install" e "Reverse Install" B, respectivamente. No entanto, não pôde ser executado de forma suave, e o setup.log gerado por B obteve ResultCode=-3, mas a razão é desconhecida...
Imploro ao deus do conselho que ajude, esse problema tem incomodado meu irmão há muito tempo, e eu não consegui resolvê-lo... Obrigado!!
No código a seguir, o código do InstallerHelper_AfterInstall e InstallerHelper_BeforeUninstall é colocado no recém-criado programa de console C#, mas pode rodar normalmente. E o WaitforExit() também pode travar suavemente, e o pacote de instalação B também pode ser executado suavemente, ResultCode=0.
O código é o seguinte: -- usando o Sistema; usando System.Collections; usando System.Collections.Generic; usando System.ComponentModel; usando System.Configuration.Install; usando System.Linq; usando System.Threading.Tasks; usando System.Configuration; usando System.Windows; usando System.IO; usando System.Diagnostics; usando System.Threading;
Namespace FRWebService
{ [RunInstaller(true)] classe parcial pública InstallerHelper : Instalador { InstaladorHelper público() {
InitializeComponent();
Isso. AntesDeInstalar += novo InstalaçãoEventoManipulador(InstallerHelper_BeforeInstall); Isso. AfterInstall += novo InstallEventHandler(InstallerHelper_AfterInstall);
Isso. AntesDeDesinstalar += novo InstalProcessEventoInstalador(InstallerHelper_BeforeUninstall); Isso. AfterUninstall += novo InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { tente { String arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.EsperarSaída();
} captura (exceção ex) {
} }
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) { tente { String arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.EsperarSaída(); } captura (exceção ex) {
} }
private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Código a ser executado no momento da instalação da aplicação publica override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); base. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Instalando Aplicativo..."); }
override public void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); base. Desinstalar (stateSaver); System.Windows.Forms.MessageBox.Show("Desinstalar Aplicativo..."); }
}
} --
|