Bonjour dieux,
J’ai récemment utilisé Setup Project pour empaqueter le programme, et il s’appelle A. En raison des exigences du projet, j’ai dû installer un paquet d’installation B fourni par InstallShield lors de l’installation de A. Dans celui-ci. AfterInstall et ceci. BeforeUninstall ajoutent respectivement le code « Installer » et « Reverse Install » B. Cependant, il n’a pas pu être exécuté sans problème, et le setup.log généré par B a obtenu ResultCode=-3, mais la raison est inconnue...
Je supplie le dieu du conseil d’aider, ce problème a troublé mon petit frère depuis longtemps, et je n’ai pas réussi à le résoudre... Merci!!
Dans le code suivant, le code du InstallerHelper_AfterInstall et InstallerHelper_BeforeUninstall est placé dans le nouveau programme console C# créé, mais il peut s’exécuter normalement. Et WaitforExit() peut aussi rester bloqué sans problème, et le package d’installation B peut aussi être exécuté sans problème, ResultCode=0.
Le code est le suivant : -- utilisant System ; en utilisant System.Collections ; utilisant System.Collections.Generic ; utilisant System.ComponentModel ; en utilisant System.Configuration.Install ; utilisant System.Linq ; utilisant System.Threading.Tasks ; utilisant System.Configuration ; en utilisant System.Windows ; utiliser System.IO ; en utilisant System.Diagnostics ; utilisant System.Threading ;
Espace de noms FRWebService
{ [RunInstaller(true)] classe partielle publique InstallerHelper : Installer { InstallerHelper() public {
InitializeComponent() ;
Exactement. AvantInstaller += nouveau InstallEventHandler(InstallerHelper_BeforeInstall) ; Exactement. AfterInstall += nouveau InstallEventHandler(InstallerHelper_AfterInstall) ;
Exactement. AvantDésinstaller += nouveau InstallEventHandler(InstallerHelper_BeforeUninstall) ; Exactement. AfterUninstall += new InstallEventHandler(InstallerHelper_AfterUninstall) ; }
void privé InstallerHelper_BeforeUninstall(objet émetteur, InstallEventArgs e) { essaie { String arg = « /s /uninst » ; Process p = Process.Start(« C :\\Program Files\\Test\\setup_io.exe », arg) ; p.WaitForInputIdle() ; p.AttendsPourSortir() ;
} catch (Exception ex) {
} }
vide privé InstallerHelper_BeforeInstall(émetteur d’objet, InstallEventArgs e) {
}
void privé InstallerHelper_Committing(object sender, InstallEventArgs e) {
}
void privé InstallerHelper_Committed(object sender, InstallEventArgs e) {
}
vide privé InstallerHelper_AfterInstall(objet émetteur, InstallEventArgs e) { essaie { String arg = « /s » ; Process p = Process.Start(« C :\\Program Files\\Test\\setup_io.exe », arg) ; p.WaitForInputIdle() ; p.AttendsPourSortir() ; } catch (Exception ex) {
} }
vide privé InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Code à exécuter au moment de l’installation de l’application override public void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch() ; base. Install(stateSaver) ; System.Windows.Forms.MessageBox.Show(« Installation de l’application... ») ; }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch() ; base. Désinstaller (stateSaver) ; System.Windows.Forms.MessageBox.Show(« Désinstallation de l’application... ») ; }
}
} --
|