Hei jumalat,
Olen viime aikoina käyttänyt Setup Projectia ohjelman pakkaamiseen, ja sen nimi on A. Projektin vaatimusten vuoksi minun piti asentaa asennuspaketti B, jonka InstallShield oli pakannut A:n asennuksen aikana. Tässä. AfterInstall ja tämä. BeforeUninstall -osat lisäävät koodit "Install" ja "Reverse Install" B. Kuitenkin sitä ei voitu suorittaa sujuvasti, ja B:n generoima setup.log sai ResultCode=-3, mutta syy on tuntematon...
Pyydän hallitusta, jumala auttamaan, tämä ongelma on vaivannut pikkuveljeäni pitkään, enkä ole pystynyt ratkaisemaan sitä... Kiitos!!
Seuraavassa koodissa InstallerHelper_AfterInstall- ja InstallerHelper_BeforeUninstall-koodit sijoitetaan uuteen C#-konsoliohjelmaan, mutta se voi toimia normaalisti. WaitforExit() voi myös jumittua sujuvasti, ja B-asennuspaketti voidaan myös suorittaa sujuvasti, ResultCode=0.
Koodi on seuraava: -- käyttämällä Systemiä; käyttäen System.Collectionsia; käyttäen System.Collections.Generic-tiedostoa; käyttäen System.ComponentModelia; käyttäen System.Configuration.Install; käyttäen System.Linqia; käyttäen System.Threading.Tasksia; käyttäen System.Configurationia; käyttäen System.Windowsia; käyttäen System.IO; System.Diagnosticsin avulla; käyttäen System.Threadingiä;
nimiavaruus FRWebService
{ [RunInstaller(true)] public partial class InstallerHelper : Installer { public InstallerHelper() {
InitializeComponent();
Tämä. BeforeInstall += uusi InstallEventHandler(InstallerHelper_BeforeInstall); Tämä. AfterInstall += uusi InstallEventHandler(InstallerHelper_AfterInstall);
Tämä. BeforeUninstall += new InstallEventHandler(InstallerHelper_BeforeUninstall); Tämä. AfterUninstall += uusi InstallEventHandler(InstallerHelper_AfterUninstall); }
private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e) { yritä { Merkkijono arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit();
} catch (poikkeus esim.) {
} }
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) { yritä { Merkkijono arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } catch (poikkeus esim.) {
} }
private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e) {
}
Koodi, joka suoritetaan sovelluksen asennuksen yhteydessä public override void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); tukikohta. Install(stateSaver); System.Windows.Forms.MessageBox.Show("Sovelluksen asennus..."); }
public override void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); tukikohta. Poista (stateSaver); System.Windows.Forms.MessageBox.Show ("Sovelluksen poistaminen..."); }
}
} --
|