Hola dioses,
Últimamente he estado usando Setup Project para empaquetar el programa, y se llama A. Debido a los requisitos del proyecto, tuve que instalar un paquete de instalación B empaquetado por InstallShield durante la instalación de A. En esto. AfterInstall y este. Las partes BeforeUninstall añaden el código "Install" y "Reverse Install" B respectivamente. Sin embargo, no pudo ejecutarse sin problemas, y el setup.log generado por B obtuvo ResultCode=-3, pero la razón es desconocida...
Le ruego al dios de la junta que me ayude, este problema ha preocupado a mi hermano pequeño durante mucho tiempo y no he podido solucionarlo... ¡¡Gracias!!
En el siguiente código, el código de la InstallerHelper_AfterInstall y InstallerHelper_BeforeUninstall se coloca en el programa de consola C# recién creado, pero puede ejecutarse normalmente. Y WaitforExit() también puede quedarse atascado sin problemas, y el paquete de instalación B también puede ejecutarse sin problemas, ResultCode=0.
El código es el siguiente: -- usando 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;
Espacio de nombres FRWebService
{ [RunInstaller(true)] clase parcial pública InstallerHelper : Instalador { InstaladorHelper público() {
InitializeComponent();
éste. AntesDeInstalar += nuevo InstalaciónEventoManejador(InstallerHelper_BeforeInstall); éste. AfterInstall += nuevo InstallEventHandler(InstallerHelper_AfterInstall);
éste. AntesDeUninstall += nuevo InstalaciónEventoManejador(InstallerHelper_BeforeUninstall); éste. AfterUninstall += nuevo InstallEventHandler(InstallerHelper_AfterUninstall); }
void privado InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { Prueba { String arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.EsperaEnInactivo(); p.EsperaSalida();
} catch (excepción ex) {
} }
void privado InstallerHelper_BeforeInstall(object sender, InstallEventArgs e) {
}
void privado InstallerHelper_Committing(object sender, InstallEventArgs e) {
}
vacío privado InstallerHelper_Committed(object sender, InstallEventArgs e) {
}
vacío privado InstallerHelper_AfterInstall(object sender, InstallEventArgs e) { Prueba { String arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.EsperaEnInactivo(); p.EsperaSalida(); } catch (excepción ex) {
} }
vacío privado InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Código a ejecutar en el momento de instalar la aplicación public, override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); base. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Instalando aplicación..."); }
anulación pública void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); base. Desinstalar (stateSaver); System.Windows.Forms.MessageBox.Show("Desinstalando la aplicación..."); }
}
} --
|