Pergunta

Gostaria de pedir desculpas antecipadamente se estou omitindo algum detalhe importante.

Estou tentando realizar uma atualização em que a versão anterior do software (e todos os componentes) deve ser removida antes de instalar a nova.

Tentarei não te aborrecer com os detalhes e direi que se você fizer uma instalação 'típica', tudo correrá conforme planejado.Se você optar por fazer uma instalação avançada (especificar a instalação para todos os usuários, instalar o local, etc.), parece que você está ignorando completamente a etapa de 'desinstalar a versão anterior'.

Até agora, fiz o seguinte:

-Editei minhas tags UpgradeVersion para corresponder ao conselho de outra pergunta sobre stackoverflow

-Verificado que a propriedade 'OLDVERSIONBEINGUPGRADED' está sendo definida corretamente

-Verifique se os códigos/IDs de atualização são iguais, os números de versão são sequenciais (atualizando de 1.0.8 para 1.0.10) - afinal, a instalação 'típica' funciona corretamente!

-Seguiu o conselho dado aqui: WiX - sempre sobrescreva a versão anterior e seguiu isto: http://wix.sourceforge.net/manual-wix3/major_upgrade.htm

-Tentei implementar um hack chamando manualmente msiexec para desinstalar uma versão anterior pelo ID do produto (isso falhou porque já estamos instalando algo - existe uma maneira melhor de agendar isso?)

Minha seção Produto/Atualização é assim:

<Product Id="GUID1" UpgradeCode="GUID2" Version="1.0.10.0">
    <Package Compressed="yes" InstallerVersion="200"/>
    <MajorUpgrade Schedule="afterInstallInitialize" 
      DowngradeErrorMessage="Another version of [ProductName] is already installed."/>
    <Upgrade Id="GUID2">
        <UpgradeVersion Minimum="1.0.10" OnlyDetect="yes"
             Property="NEWERVERSIONDETECTED" />
        <UpgradeVersion Maximum="1.0.10" IncludeMaximum="no" 
             Property="PREVIOUSVERSIONINSTALLED" />
    </Upgrade>

Sou um novato no Wix, então posso ter esquecido detalhes importantes ao descrever meu problema.Se eu esqueci de incluir algo importante, por favor me avise.

Agradecemos antecipadamente por qualquer contribuição que você possa fornecer.

Foi útil?

Solução

Parece que você está enfrentando a mesma limitação que eu, veja essa questão.Você não pode alterar o escopo de instalação ("por usuário" ou "por máquina") em uma atualização.

Não há uma maneira simples de contornar isso no Windows Installer.Você só pode criar um exe de bootstrapper separado que desinstale a versão anterior e, em seguida, inicie a instalação da nova versão.

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