Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 16162|Resposta: 2

[Nova Edição] Haverá problemas para rodar o pacote de instalação InstallShield usando o Modo Silencioso dentro do projeto Projeto de Configuração

[Copiar link]
Publicado em 28/08/2018 11:56:12 | | |
Olá deuses,

Tenho usado o Setup Project para empacotar o programa recentemente, e ele se chama A.
Devido aos requisitos do projeto, precisei instalar um pacote de instalação B empacotado pelo InstallShield durante a instalação do A.
Nesse caso. AfterInstall e this.BeforeUninstall partes adicionam o código "Install" e "Reverse Install" B, respectivamente.
No entanto, não pôde ser executado de forma suave, e o setup.log gerado por B obteve ResultCode=-3, mas a razão é desconhecida...

Imploro ao deus do conselho que ajude, esse problema tem incomodado meu irmão há muito tempo, e eu não consegui resolvê-lo... Obrigado!!

No código a seguir, o código do InstallerHelper_AfterInstall e InstallerHelper_BeforeUninstall é colocado no recém-criado programa de console C#, mas pode rodar normalmente.
E o WaitforExit() também pode travar suavemente, e o pacote de instalação B também pode ser executado suavemente, ResultCode=0.

O código é o seguinte:
--
usando o Sistema;
usando System.Collections;
usando System.Collections.Generic;
usando System.ComponentModel;
usando System.Configuration.Install;
usando System.Linq;
usando System.Threading.Tasks;
usando System.Configuration;
usando System.Windows;
usando System.IO;
usando System.Diagnostics;
usando System.Threading;

Namespace FRWebService
{
    [RunInstaller(true)]
    classe parcial pública InstallerHelper : Instalador
    {
        InstaladorHelper público()
        {

            InitializeComponent();

            Isso. AntesDeInstalar += novo InstalaçãoEventoManipulador(InstallerHelper_BeforeInstall);
            Isso. AfterInstall += novo InstallEventHandler(InstallerHelper_AfterInstall);

            Isso. AntesDeDesinstalar += novo InstalProcessEventoInstalador(InstallerHelper_BeforeUninstall);
            Isso. AfterUninstall += novo InstallEventHandler(InstallerHelper_AfterUninstall);
        }

        private void InstallerHelper_BeforeUninstall(object sender, InstallEventArgs e)
        {
            tente
            {
                String arg = "/s /uninst";
                Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.EsperarSaída();

            }
            captura (exceção 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)
        {
            tente
            {
                String arg = "/s";
                Process p = Process.Start("C:\\Program Files\\Test\\setup_io.exe", arg);
                p.WaitForInputIdle();
                p.EsperarSaída();
            }
            captura (exceção ex)
            {

            }
        }

        private void InstallerHelper_AfterUninstall(object sender, InstallEventArgs e)
        {


        }


        Código a ser executado no momento da instalação da aplicação
        publica override void Install(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            base. Install(stateSaver);
            System.Windows.Forms.MessageBox.Show("Instalando Aplicativo...");
        }

        override public void Uninstall(System.Collections.IDictionary stateSaver)
        {
            System.Diagnostics.Debugger.Launch();
            base. Desinstalar (stateSaver);
            System.Windows.Forms.MessageBox.Show("Desinstalar Aplicativo...");
        }

    }
}
--





Anterior:O Linq implementa consultas condicionais não em e em SQL
Próximo:MySQL consultas tabelas criadas em um determinado momento em um banco de dados
Publicado em 28/08/2018 13:02:49 |
Você pode colar setup.log logs? Ou rodar a instalação como administrador e tentar?
 Senhorio| Publicado em 28/08/2018 14:21:53 |
Este post foi editado pela última vez por yishiang0217 em 2018-9-3 às 09:47
admin Postado em 28-08-2018 às 13:02
Você pode colar setup.log logs? Ou rodar a instalação como administrador e tentar?

Olá, administradores,

Bom receber sua resposta, aqui estão as respostas para suas perguntas:

1.
É só disso setup.log @@
--
[ResultadoResposta]
ResultCode=-3
--
Ou o InstallShield pode imprimir mais?!

2.
O Projeto de Configuração gera dois arquivos, um é msi e o outro é um exe, tentei rodar o exe como administrador, mas não consegui...

P.S. A parte que tem sido bem-sucedida até agora é... Execute o pacote B de instalação ao AfterInstall, mas não use o WaitForExit, você pode instalá-lo de forma suave e silenciosa... Mas como o B está instalado e embalado, ainda preciso fazer algumas operações...
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com