Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 16162|Odpowiedź: 2

[Nowy numer] Wystąpią problemy z uruchomieniem pakietu instalacyjnego InstallShield w trybie cichym w projekcie Setup Project

[Skopiuj link]
Opublikowano 28.08.2018 11:56:12 | | |
Witajcie bogowie,

Ostatnio używam Setup Project do pakowania programu i nazywa się A.
Ze względu na wymagania projektu musiałem zainstalować pakiet instalacyjny B przygotowany przez InstallShield podczas instalacji A.
W tym. AfterInstall i this.BeforeUninstall dodają odpowiednio kod "Install" i "Reverse Install" B.
Jednak nie udało się go wykonać płynnie, a setup.log wygenerowany przez B uzyskał ResultCode=-3, ale powód pozostaje nieznany...

Błagam Boga zarządu o pomoc, ten problem od dawna dręczy mojego młodszego brata i nie udało mi się go rozwiązać... Dziękuję!!

W poniższym kodzie kod w InstallerHelper_AfterInstall i InstallerHelper_BeforeUninstall jest umieszczany w nowo utworzonym programie konsolowym C#, ale może działać normalnie.
WaitforExit() również może się zaciąć płynnie, a pakiet instalacyjny B również może być uruchamiany płynnie, ResultCode=0.

Kod jest następujący:
--
z wykorzystaniem System;
za pomocą System.Collections;
używając System.Collections.Generic;
używając System.ComponentModel;
używając System.Configuration.Install;
używając System.Linq;
używając System.Threading.Tasks;
używając System.Configuration;
używając System.Windows;
używając System.IO;
za pomocą System.Diagnostics;
używając System.Threading;

przestrzeń nazw FRWebService
{
    [RunInstaller(true)]
    publiczna częściowa klasa InstallerHelper : Installer
    {
        public InstallerHelper()
        {

            InitializeComponent();

            Dokładnie tak. BeforeInstall += nowy InstallEventHandler(InstallerHelper_BeforeInstall);
            Dokładnie tak. AfterInstall += nowy InstallEventHandler(InstallerHelper_AfterInstall);

            Dokładnie tak. BeforeUninstall += nowy InstallEventHandler(InstallerHelper_BeforeUninstall);
            Dokładnie tak. AfterUninstall += nowy InstallEventHandler(InstallerHelper_AfterUninstall);
        }

        private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e)
        {
            spróbuj
            {
                Struna arg = "/s /uninst";
                Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.WaitForExit();

            }
            złapanie (Wyjątek ex)
            {

            }
        }

        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)
        {
            spróbuj
            {
                Struna arg = "/s";
                Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.WaitForExit();
            }
            złapanie (Wyjątek ex)
            {

            }
        }

        private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e)
        {


        }


        Kod do wykonania podczas instalacji aplikacji
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            Baza. Install(stateSaver);
            System.Windows.Forms.MessageBox.Show("Instalacja aplikacji...");
        }

        public override void Uninstall(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            Baza. Odinstaluj (stateSaver);
            System.Windows.Forms.MessageBox.Show("Odinstalowywanie aplikacji...");
        }

    }
}
--





Poprzedni:Linq implementuje nie w i w zapytaniach warunkowych w SQL
Następny:MySQL zapytania tworzone w określonym czasie w bazie danych
Opublikowano 28.08.2018 13:02:49 |
Czy można wkleić setup.log logi? A może uruchomić instalację jako administrator i spróbować?
 Ziemianin| Opublikowano 28.08.2018 14:21:53 |
Ten post został ostatnio edytowany przez yishiang0217 w dniu 2018-9-3 09:47
admin opublikowano 2018-8-28 13:02
Czy można wkleić setup.log logi? A może uruchomić instalację jako administrator i spróbować?

Witam administratorów,

Miło otrzymać Twoją odpowiedź, oto odpowiedzi na twoje pytania:

1.
O to właśnie setup.log chodzi @@
--
[Wynik odpowiedzi]
ResultCode=-3
--
A może InstallShield może wydrukować więcej?!

2.
Setup Project wygeneruje dwa pliki, jeden to msi, a drugi to exe. Próbowałem uruchomić plik exe jako administrator, ale nie mogłem...

P.S. Część, która jak dotąd się udała, to... Uruchom pakiet instalacyjny B po instalacji, ale nie używaj WaitForExit, możesz zainstalować go płynnie i bezgłośnie... Ale ponieważ B jest zainstalowane i zapakowane, muszę jeszcze wykonać pewne operacje...
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com