Привет, боги,
В последнее время я использую Setup Project для упаковки программы, и она называется A. Из-за требований проекта мне пришлось установить установочный пакет B, упакованный InstallShield, во время установки A. В этом. AfterInstall и this.BeforeDelete добавляют код «Install» и «Reverse Install» 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;
пространство имён FRWebService
{ [RunInstaller(true)] 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.WaitForInputIdle(); 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.WaitForInputIdle(); 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 ("Удаление приложения..."); }
}
} --
|