Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 16162|Răspunde: 2

[Număr nou] Vor exista probleme la rularea pachetului de instalare InstallShield folosind Modul Silențios în cadrul proiectului Setup Project

[Copiază linkul]
Postat pe 28.08.2018 11:56:12 | | |
Salut, zei,

Am folosit recent Setup Project pentru a împacheta programul și se numește A.
Din cauza cerințelor proiectului, a trebuit să instalez un pachet de instalare B ambalat de InstallShield în timpul instalării A.
În asta. AfterInstall și aceasta. Părțile BeforeUninstall adaugă codul "Install" și "Reverse Install" B, respectiv.
Totuși, nu a putut fi executat lin, iar setup.log generat de B a obținut ResultCode=-3, dar motivul este necunoscut...

Implor zeul consiliului să mă ajute, această problemă îl frământă pe fratele meu mai mic de mult timp și nu am reușit să o rezolv... Vă mulțumesc!!

În codul următor, codul din InstallerHelper_AfterInstall și InstallerHelper_BeforeUninstall este plasat în noul program de consolă C# creat, dar poate rula normal.
Și WaitforExit() poate rămâne blocat fără probleme, iar pachetul de instalare B poate fi executat fără probleme, ResultCode=0.

Codul este următorul:
--
folosind Sistem;
folosind System.Collections;
folosind System.Collections.Generic;
folosind System.ComponentModel;
folosind System.Configuration.Install;
folosind System.Linq;
folosind System.Threading.Tasks;
folosind System.Configuration;
folosind System.Windows;
folosind System.IO;
folosind System.Diagnostics;
folosind System.Threading;

Spațiul de nume FRWebService
{
    [RunInstaller(true)]
    clasa parțială publică InstallerHelper : Installer
    {
        public InstallerHelper()
        {

            InitializeComponent();

            Asta. ÎnainteDeInstalare += nou InstallEventHandler(InstallerHelper_BeforeInstall);
            Asta. AfterInstall += noul InstallEventHandler(InstallerHelper_AfterInstall);

            Asta. ÎnainteUninstall += nou InstallEventHandler(InstallerHelper_BeforeUninstall);
            Asta. AfterUninstall += noul InstallEventHandler(InstallerHelper_AfterUninstall);
        }

        private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e)
        {
            încearcă
            {
                String arg = "/s /uninst";
                Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.AșteptăpenIeșire();

            }
            catch (excepție ex)
            {

            }
        }

        privat void InstallerHelper_BeforeInstall(object sender, InstallEventArgs e)
        {

        }

        privat void InstallerHelper_Committing(object sender, InstallEventArgs e)
        {

        }

        privat void InstallerHelper_Committed(object sender, InstallEventArgs e)
        {

        }

        privat void InstallerHelper_AfterInstall(object sender, InstallEventArgs e)
        {
            încearcă
            {
                String arg = "/s";
                Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.AșteptăpenIeșire();
            }
            catch (excepție ex)
            {

            }
        }

        privat void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e)
        {


        }


        Cod de executat în momentul instalării aplicației
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            bază. Install(stateSaver);
            System.Windows.Forms.MessageBox.Show("Instalare aplicație...");
        }

        public override void Uninstall(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            bază. Dezinstalare (stateSaver);
            System.Windows.Forms.MessageBox.Show("Deinstalare aplicație...");
        }

    }
}
--





Precedent:Linq implementează interogări condiționate în și nu în SQL
Următor:MySQL interogează tabele construite la un anumit moment într-o bază de date
Postat pe 28.08.2018 13:02:49 |
Poți lipi setup.log jurnale? Sau să rulez instalarea ca administrator și să încerc?
 Proprietarul| Postat pe 28.08.2018 14:21:53 |
Această postare a fost editată ultima dată de yishiang0217 la 2018-9-3 09:47
admin Postat pe 28-08-2018 13:02
Poți lipi setup.log jurnale? Sau să rulez instalarea ca administrator și să încerc?

Salut, administratori,

Mă bucur să primesc răspunsul tău, iată răspunsurile la întrebările tale:

1.
Despre asta setup.log este vorba @@
--
[RăspunsRezultat]
ResultCode=-3
--
Sau poate InstallShield să imprime mai mult?!

2.
Setup Project va genera două fișiere, unul este msi și celălalt este exe, am încercat să rulez exe-ul ca administrator, dar nu am reușit...

P.S. Partea care a avut succes până acum este... Rulează pachetul de instalare B când faci AfterInstall, dar nu folosi WaitForExit, îl poți instala lin și silențios... Dar pentru că B este instalat și ambalat, tot trebuie să fac unele operațiuni...
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com