Здравейте, богове,
Напоследък използвам Setup Project за пакетиране на програмата, която се нарича A. Поради изискванията на проекта трябваше да инсталирам инсталационен пакет B, пакетиран от InstallShield, по време на инсталацията на A. В това. След инсталация и това. Преди деинсталиране добавят кода "Инсталация" и "Обратна инсталация" B съответно. Въпреки това, не можеше да се изпълни гладко и setup.log, генериран от B, получи ResultCode=-3, но причината е неизвестна...
Моля богът на борда да помогне, този проблем тревожи малкия ми брат отдавна и не успях да го реша... Благодарим ви!!
В следващия код кодът в InstallerHelper_AfterInstall и InstallerHelper_BeforeUninstall се поставя в новосъздадената C# конзолна програма, но може да работи нормално. WaitforExit() също може да се забие гладко, а B инсталационният пакет също може да се изпълнява гладко, ResultCode=0.
Кодът е следният: -- използвайки System; използвайки System.Collections; използвайки System.Collections.Generic; използвайки System.ComponentModel; използвайки System.Configuration.Install; използвайки System.Linq; използвайки System.Threading.Tasks; използвайки System.Configuration; използвайки System.Windows; използвайки System.IO; използвайки System.Diagnostics; използване на System.Threading;
namespace FRWebService
{ [RunInstaller(вярно)] public partial class InstallerHelper : Installer { public InstallerHelper() {
InitializeComponent();
това. BeforeInstall += нов InstallEventHandler(InstallerHelper_BeforeInstall); това. AfterInstall += нов InstallEventHandler(InstallerHelper_AfterInstall);
това. BeforeUninstall += нов InstallEventHandler(InstallerHelper_BeforeUninstall); това. AfterUninstall += нов InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { Опитай { String arg = "/s /uninst"; Процес p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.ЧакайтеЗаВъвеждане(); p.WaitForExit();
} catch (Изключение напр.) {
} }
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) { Опитай { String arg = "/s"; Процес p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.ЧакайтеЗаВъвеждане(); p.WaitForExit(); } catch (Изключение напр.) {
} }
private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Код, който да се изпълнява при инсталиране на приложението public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); базово. Install (stateSaver); System.Windows.Forms.MessageBox.Show ("Инсталиране на приложение..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); базово. Uninstall (stateSaver); System.Windows.Forms.MessageBox.Show ("Деинсталиране на приложение..."); }
}
} --
|