Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 16162|Відповідь: 2

[Новий випуск] Виникнуть проблеми з запуском пакету встановлення InstallShield у режимі Silent у проєкті Setup Project

[Копіювати посилання]
Опубліковано 28.08.2018 11:56:12 | | |
Привіт, боги,

Останнім часом я використовую Setup Project для пакування програми, і вона називається A.
Через вимоги проєкту мені довелося встановити інсталяційний пакет B, упакований InstallShield, під час встановлення A.
У цьому. AfterInstall та це.BeforeRemove частини додають код «Install» та «Reverse Install» B відповідно.
Однак його не вдалося виконати плавно, і setup.log, згенерований B, отримав ResultCode=-3, але причина цього невідома...

Я благаю бога ради допомогти, ця проблема давно турбує мого молодшого брата, і я не зміг її вирішити... Дякую!!

У наступному коді код у InstallerHelper_AfterInstall та InstallerHelper_BeforeUninstall розміщується у новоствореній консолі C#, але вона може працювати нормально.
І WaitforExit() також може застрягти плавно, а пакет встановлення B також може запускатися плавно, ResultCode=0.

Код виглядає так:
--
використовуючи System;
використовуючи System.Collections;
з використанням System.Collections.Generic;
використовуючи System.ComponentModel;
використовуючи System.Configuration.Install;
використовуючи System.Linq;
використовуючи System.Threading.Tasks;
використовуючи System.Configuration;
використання System.Windows;
використовуючи System.IO;
використання System.Diagnostics;
використовуючи System.Threading;

простор назв FRWebService
{
    [RunInstaller(true)]
    public partial class InstallerHelper : Installer
    {
        public InstallerHelper()
        {

            InitializeComponent();

            саме так. BeforeInstall += новий InstallEventHandler(InstallerHelper_BeforeInstall);
            саме так. AfterInstall += новий InstallEventHandler(InstallerHelper_AfterInstall);

            саме так. BeforeUninstall += новий InstallEventHandler(InstallerHelper_BeforeUninstall);
            саме так. AfterUninstall += новий InstallEventHandler(InstallerHelper_AfterUninstall);
        }

        private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e)
        {
            спробуйте
            {
                String arg = "/s /uninst";
                Процес p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.WaitForExit();

            }
            catch (виняток, наприклад)
            {

            }
        }

        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)
        {
            спробуйте
            {
                String arg = "/s";
                Процес p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.WaitForExit();
            }
            catch (виняток, наприклад)
            {

            }
        }

        private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e)
        {


        }


        Код для виконання під час встановлення додатка
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            базово. Встановити (stateSaver);
            System.Windows.Forms.MessageBox.Show ("Встановлення додатку...");
        }

        public override void Uninstall(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            базово. Uninstall(stateSaver);
            System.Windows.Forms.MessageBox.Show ("Видалення додатку...");
        }

    }
}
--





Попередній:Linq реалізує не в і в умовах умовних запитів у SQL
Наступний:MySQL використовує таблиці запитів, створені в певний момент часу в базі даних
Опубліковано 28.08.2018 13:02:49 |
Чи можете ви вставити setup.log логи? Чи запустити інсталяцію як адміністратор і спробувати?
 Орендодавець| Опубліковано 28.08.2018 14:21:53 |
Цей допис востаннє редагувався yishiang0217 2018-9-3 09:47
Адміністратор опубліковано 2018-8-28 13:02
Чи можете ви вставити setup.log логи? Чи запустити інсталяцію як адміністратор і спробувати?

Вітаю, адміністратори,

Радий отримати вашу відповідь, ось відповіді на ваші запитання:

1.
Ось у чому setup.log @@
--
[ВідповідьРезультат]
ResultCode=-3
--
Чи може InstallShield друкувати більше?!

2.
Setup Project генерує два файли: один MSI, інший — exe, я намагався запустити exe як адміністратор, але не зміг...

P.S. Частина, яка поки що була успішною... Запускайте пакет встановлення B під час AfterInstall, але не використовуйте WaitForExit — можна встановити його плавно і безшумно... Але оскільки B встановлений і упакований, мені ще треба виконувати деякі операції...
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com