|
|
Paskelbta 2018-08-28 11:56:12
|
|
|

Sveiki dievai,
Neseniai naudoju sąrankos projektą programai supakuoti, ir ji vadinama A. Dėl projekto reikalavimų, aš turėjau įdiegti diegimo paketą B supakuotas InstallShield diegimo metu A. Šiame. AfterInstall ir this.BeforePašalinkite dalis pridėkite kodą "Install" ir "Reverse Install" B atitinkamai. Tačiau jo nepavyko sklandžiai įvykdyti, o B sugeneruotas setup.log gavo ResultCode=-3, tačiau priežastis nežinoma...
Maldauju lentos dievo pagalbos, ši problema ilgą laiką vargino mano mažąjį brolį, ir aš nesugebėjau jos išspręsti... Ačiū!!
Šiame kode InstallerHelper_AfterInstall ir InstallerHelper_BeforeUninstall esantis kodas dedamas į naujai sukurtą C# konsolės programą, tačiau jis gali veikti normaliai. Ir WaitforExit() taip pat gali įstrigti sklandžiai, o B diegimo paketas taip pat gali būti vykdomas sklandžiai, ResultCode=0.
Kodas yra toks: -- naudojantis Sistema; naudojant System.Collections; naudojant System.Collections.Generic; naudojant System.ComponentModel; naudojant System.Configuration.Install; naudojant System.Linq; naudojant System.Threading.Tasks; naudojant System.Configuration; naudojant "System.Windows"; naudojant System.IO; naudojant "System.Diagnostics"; naudojant System.Threading;
vardų sritis FRWebService
{ [RunInstaller(true)] viešoji dalinė klasė InstallerHelper : Montuotojas { public InstallerHelper() {
InicijuotiKomponentas();
tai. BeforeInstall += naujas InstallEventHandler(InstallerHelper_BeforeInstall); tai. AfterInstall += naujas InstallEventHandler(InstallerHelper_AfterInstall);
tai. PriešPašalinkite += naujas InstallEventHandler(InstallerHelper_BeforeUninstall); tai. AfterUninstall += naujas InstallEventHandler(InstallerHelper_AfterUninstall); }
privatus void InstallerHelper_BeforeUninstall(objekto siuntėjas, InstallEventArgs e) { Pabandykite { String arg = "/s /uninst"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit();
} laimikis (išimtis ex) {
} }
privatus void InstallerHelper_BeforeInstall(objekto siuntėjas, InstallEventArgs e) {
}
privatus void InstallerHelper_Committing(objekto siuntėjas, InstallEventArgs e) {
}
privatus void InstallerHelper_Committed(objekto siuntėjas, InstallEventArgs e) {
}
privatus void InstallerHelper_AfterInstall(objekto siuntėjas, InstallEventArgs e) { Pabandykite { String arg = "/s"; Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg); p.WaitForInputIdle(); p.WaitForExit(); } laimikis (išimtis ex) {
} }
privatus void InstallerHelper_AfterUninstall(objekto siuntėjas, InstallEventArgs e) {
}
Kodas, kurį reikia atlikti diegiant programą viešasis nepaisymas void Install(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); pagrindas. Įdiegti(stateSaver); System.Windows.Forms.MessageBox.Show("Programos diegimas..."); }
viešasis nepaisymas void Uninstall(System.Collections.IDictionary stateSaver) { System.Diagnostics.Debugger.Launch(); pagrindas. Pašalinti(stateSaver); System.Windows.Forms.MessageBox.Show("Pašalinama programa..."); }
}
} --
|
Ankstesnis:Linq įgyvendina ne SQL ir sąlyginėse užklausoseKitą:MySQL užklausos lentelės, sukurtos tam tikru metu duomenų bazėje
|