Estou utilizando o elemento WiX "Environment" para definir uma variável de ambiente.
<Environment Action="create" Name="My_Certificates" System="yes" Id="certificate_env" Value="[CERT_XML_PATH]" Permanent="yes" />
CERT_XML_PATH é definido como o seguinte: c: \ this \ is \ my \ path \ myfile.xml
Se esse arquivo realmente existir, a variável de ambiente é definida corretamente e aponta para o arquivo. Se esse arquivo específico não existir no momento da instalação, a variável de ambiente é criada e definida, mas o caminho é truncado para remover a parte myfile.xml.
Este instalador faz parte de um pacote maior. Ele tem seu próprio MSI autônomo. A instalação de um dos pacotes cria esse arquivo xml, mas não aquele em que estou trabalhando. Se o arquivo xml foi criado, tudo funciona bem. Mas se este instalador for executado primeiro, ele definirá a variável de ambiente para
A variável de ambiente "My_Certificates" é criada, mas definida como:
Em vez de:
Solução de problemas:
O log de instalação mostra a propriedade sendo definida no local apropriado.
MSI (s) (70:80) [15: 27: 44: 988]: ALTERAÇÃO DE PROPRIEDADE: Adicionando propriedade CERT_XML_PATH. Seu valor é 'c: \ this \ is \ my \ path \ myfile.xml'.
Em seguida, vemos o instalador fazendo um WriteEnvironmentStrings a utilizando o caminho adequado, incluindo o arquivo xml.
MSI (s) (70:80) [15: 27: 50: 644]: Executando op: UpdateEnvironmentStrings (Name = My_Certificates, Value = c: \ this \ is \ my \ path \ myfile.xml, Delimiter = [~] , Ação = 536870914,)
WriteEnvironmentStrings: Nome: My_Certificates, Value: c: \ this \ is \ my \ path \ myfile.xml, Action 536870914
captura de tela de variáveis do sistema mostrando que não estão definidas corretamente
Qualquer ideia do motivo pelo qual o nome do arquivo está sendo truncado seria muito apreciada.
Encontrou o problema. Há uma ação personalizada no instalador que também tenta definir a variável de ambiente. Ao desativar essa ação personalizada, tudo funciona conforme o planejado.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras