Obtendo local do setup.exe na ação personalizada
-
11-09-2019 - |
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());
}
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.
Você também pode tentar o seguinte: I exigem uma ação MSI personalizado que copia um arquivo do diretório de origem MSI