Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 16162|Ответ: 2

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

[Скопировать ссылку]
Опубликовано 28.08.2018 11:56:12 | | |
Привет, боги,

В последнее время я использую Setup Project для упаковки программы, и она называется A.
Из-за требований проекта мне пришлось установить установочный пакет B, упакованный InstallShield, во время установки A.
В этом. AfterInstall и this.BeforeDelete добавляют код «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();
            базовый. Install (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 3.09.2018 09:47
Админ опубликовано 28.08.2018 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