Pergunta

C # 2005

Eu estou usando uma classe de instalador como eu preciso uma ação personalizada que vai ler em um arquivo XML de configuração.

Assim, quando o usuário clica duas vezes a instalação, haverá um arquivo config.xml na mesma pasta. Eu gostaria de ler neste arquivo config.xml em instalar evento. A pasta irá conter setup.exe e config.xml

No entanto, não pode encontrar o arquivo config.xml como ele está olhando para ele em C: \ windows \ system32. Descobri isso usando applicationstartup.path. No entanto, a pasta de configuração que contém a configuração e config.xml está localizado no meu desktop.

Eu pensei que ele vai olhar para ele no local atual. Qual seria a pasta de instalação.

A dificuldade é que a minha pasta de instalação será baixado da Internet e qualquer usuário pode fazer o download e descompactá-lo em qualquer lugar em seu computador.

Aqui está o meu trecho de código para o evento em instalar.

Muito obrigado por qualquer conselho

protected override void OnAfterInstall(System.Collections.IDictionary savedState)
    {
        DataTable dt = new DataTable();
        MessageBox.Show(Application.StartupPath.ToString());
        dt.ReadXml("config.xml");

        MessageBox.Show(base.Context.Parameters["CAT_TargetDir"].ToString());
    } 
Foi útil?

Solução 3

Estou conseguiu resolver isso.

A resposta foi apenas para escrever um arquivo bat simples que vai fazer todo o trabalho para mim. Em seguida, o arquivo bat vai chamar a instalação e instalar o aplicativo.

Obrigado,

Outras dicas

Assumindo que você está falando de um MSI, não é que o OriginalDatabase propriedade?

Supondo que você não está mistyping CAT_TargetDir vez de TARGETDIR você pode fazer o seguinte solução alternativa: definir um CustomActionData e passar TARGETDIR como o argumento para sua ação personalizada. Não é a solução mais elegante, mas ele deve funcionar muito fácil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top