Witajcie bogowie,
Ostatnio używam Setup Project do pakowania programu i nazywa się A. Ze względu na wymagania projektu musiałem zainstalować pakiet instalacyjny B przygotowany przez InstallShield podczas instalacji A. W tym. AfterInstall i this.BeforeUninstall dodają odpowiednio kod "Install" i "Reverse Install" B. Jednak nie udało się go wykonać płynnie, a setup.log wygenerowany przez B uzyskał ResultCode=-3, ale powód pozostaje nieznany...
Błagam Boga zarządu o pomoc, ten problem od dawna dręczy mojego młodszego brata i nie udało mi się go rozwiązać... Dziękuję!!
W poniższym kodzie kod w InstallerHelper_AfterInstall i InstallerHelper_BeforeUninstall jest umieszczany w nowo utworzonym programie konsolowym C#, ale może działać normalnie. WaitforExit() również może się zaciąć płynnie, a pakiet instalacyjny B również może być uruchamiany płynnie, ResultCode=0.
Kod jest następujący: -- z wykorzystaniem System; za pomocą System.Collections; używając System.Collections.Generic; używając System.ComponentModel; używając System.Configuration.Install; używając System.Linq; używając System.Threading.Tasks; używając System.Configuration; używając System.Windows; używając System.IO; za pomocą System.Diagnostics; używając System.Threading;
przestrzeń nazw FRWebService
{ [RunInstaller(true)] publiczna częściowa klasa InstallerHelper : Installer { public InstallerHelper() {
InitializeComponent();
Dokładnie tak. BeforeInstall += nowy InstallEventHandler(InstallerHelper_BeforeInstall); Dokładnie tak. AfterInstall += nowy InstallEventHandler(InstallerHelper_AfterInstall);
Dokładnie tak. BeforeUninstall += nowy InstallEventHandler(InstallerHelper_BeforeUninstall); Dokładnie tak. AfterUninstall += nowy InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { spróbuj { Struna arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit();
} złapanie (Wyjątek 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) { spróbuj { Struna arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } złapanie (Wyjątek ex) {
} }
private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Kod do wykonania podczas instalacji aplikacji public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); Baza. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Instalacja aplikacji..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); Baza. Odinstaluj (stateSaver); System.Windows.Forms.MessageBox.Show("Odinstalowywanie aplikacji..."); }
}
} --
|