Questão “O diretório de instalação deve estar em uma unidade local” msi install error


Alguns de nossos usuários em nossa organização começaram a relatar um erro estranho ao instalar nosso produto (detalhes do produto redigidos da captura de tela):

Screenshot of the danish error message

A mensagem de erro original em inglês é "O diretório de instalação deve estar em uma unidade local".

Alterar o caminho para algo sem espaços, pastas raiz alternativas ou até mesmo outras unidades físicas na máquina não alteram nada. O instalador ainda insiste em que o caminho não é um caminho local.

Este instalador é criado com o WIX, e a etapa específica no processo é criada com a ação customizada WixUIValidatePath. Um bug foi enviado anteriormente, que também indica que o erro está relacionado a restrições no instalador (obrigado a peterflynn no GitHub por me apontar nessa direção).

O problema só ocorre em alguns computadores, e parece que ninguém tem o problema no Windows 10. Eu não tenho sido capaz de testar se ele ocorre em outras versões do Windows uma parte do 8.1, como isso e o Windows 10 são as únicas versões que corre.


3


origem


Qual é a relação da tag [wix] com essa questão? - CharlieRB
Vai editá-lo uma vez im em conputer novamente. Veja a resposta para detalhes. @CharlieRB - Johny Skovdal
NP ... Sim, vejo a referência ao Wix na resposta. Esta é uma boa pergunta e resposta, eu só queria ter certeza se a tag é importante para a pergunta, deveria haver alguma menção a ela na questão. - CharlieRB
@CharlieRB: Exatamente, eu simplesmente esqueci esse detalhe, então obrigado por apontar isso! :) Deve ficar mais claro agora. - Johny Skovdal


Respostas:


Depois de muita depuração, reduzimos a problemas com direitos a pastas temporárias com o usuário atual. Etapas diferentes resolveram o problema em computadores diferentes. Aqui vou listar as correções do menos para as abordagens mais invasivas:

  1. Assegure-se de que o instalador seja executado como administrador
    Isso é algo que já precisamos, mas alguns usuários tendem a esquecer isso. Essa também é a solução mais comum para o problema que encontrei ao procurar uma solução.
    A maneira mais simples de garantir isso é pressionando o botão WinKey e digite cmd para localizar o prompt de comando e pressione CTRL + SHIFT + ENTER para abrir o prompt de comando como administrador e, em seguida, navegue até a pasta msi (para instruções de navegação, veja este link) e executá-lo de lá.
  2. Instalar manualmente o KB3072630
    Alguns de nossos usuários, por algum motivo, não foram corretamente recebidos esta atualização particular do MS o que pareceu resolver a questão! Foi aí que a maioria dos usuários resolveu o problema.
  3. Execute o instalador silenciosamente
    O bug está relacionado a um componente WIX UI, portanto, a execução silenciosa do MSI não ativará o componente UI e, portanto, o bug também não será acionado. Você pode fazer isso através do prompt de comando, conforme especificado na etapa acima, mas com esses parâmetros adicionados ao MSI:
    /qn+
    Graças ao Kr3m no GitHub para esta abordagem
  4. Execute o instalador com a verificação da interface do usuário desativada
    O componente do WIX UI que contém tudo também pode ser desativado. AVISO: Isso também desabilitará as verificações de integridade no caminho da instalação e poderá atrapalhar o processo de instalação! Isso pode ser feito com outro parâmetro de linha de comando:
    WIXUI_DONTVALIDATEPATH="1"
    Graças a peterflynn no GitHub para esta abordagem 
  5. Desativar LUA
    A única maneira segura de remover o problema era desativar completamente o LUA, que era o padrão para alguns de nossos ambientes, para poder trabalhar com recursos herdados. Desativar o LUA requer alterações manuais no registro, portanto, certifique-se de que você sabe o que está fazendo e as conseqüências disso também. Instruções podem ser encontradas aqui no fórum do MS.

Uma coisa que não testamos, que pode resolvê-lo também, é recriar o usuário no computador, porque achamos que ele tem a ver com direitos de acesso às próprias pastas temporárias dos usuários. Eles podem ser recriados corretamente por meio de uma recriação do usuário.


5