Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 16162|Atsakyti: 2

[Naujas numeris] Bus problemų paleidžiant "InstallShield" diegimo paketą naudojant tylųjį režimą sąrankos projekto projekte

[Kopijuoti nuorodą]
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žklausose
Kitą:MySQL užklausos lentelės, sukurtos tam tikru metu duomenų bazėje
Paskelbta 2018-08-28 13:02:49 |
Ar galite įklijuoti setup.log žurnalus? Arba paleiskite diegimą kaip administratorius ir išbandykite?
 Savininkas| Paskelbta 2018-08-28 14:21:53 |
Šį pranešimą paskutinį kartą redagavo yishiang0217 2018-9-3 09:47
admin Parašyta 2018-8-28 13:02
Ar galite įklijuoti setup.log žurnalus? Arba paleiskite diegimą kaip administratorius ir išbandykite?

Sveiki administratoriai,

Malonu gauti atsakymą, čia yra atsakymai į jūsų klausimus:

1.
Tai viskas setup.log apie ką kalbama @@
--
[Atsakymo rezultatas]
Rezultato kodas = -3
--
O gal "InstallShield" gali spausdinti daugiau?!

2.
Sąrankos projektas sugeneruos du failus, vienas yra msi, o kitas yra exe, bandžiau paleisti exe kaip administratorius, bet negalėjau...

P.S. Dalis, kuri iki šiol buvo sėkminga, yra... Paleiskite B diegimo paketą, kai "AfterInstall", bet nenaudokite "WaitForExit", galite jį įdiegti sklandžiai ir tyliai... Bet kadangi B yra įdiegta ir supakuota, aš vis tiek turiu atlikti kai kurias operacijas...
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com