Veja o que os Less Msiérables (LessMSI) de Scott Willeke podem fazer por você ...
Use-o para extrair e alterar guias e / ou conteúdo do MSI, reempacotar e executar sua necessidade de 'instalar duas vezes'.
Eu tenho um desejo peculiar de instalar um msi duas vezes em uma máquina. O objetivo da instalação dupla é primeiro instalar sob a pasta de pré-produção, executar a implantação em um ambiente seguro antes de implantar na pasta de produção.
Normalmente, usamos máquinas separadas para representar esses ambientes diferentes. No entanto, neste caso, preciso usar a mesma caixa.
Os dois cenários que obtenho são os seguintes:
O primeiro cenário não é tão ruim como podemos, nesse ponto, instalar e reinstalar de maneira sensata sob a pasta de produção, mas o segundo cenário é um problema, já que não queremos desinstalar a produção ao vivo implantação.
Existe uma configuração que eu posso dar ao msiexec que permitirá isso?
Existe uma abordagem diferente mais adequada que eu poderia usar?
Veja o que os Less Msiérables (LessMSI) de Scott Willeke podem fazer por você ...
Use-o para extrair e alterar guias e / ou conteúdo do MSI, reempacotar e executar sua necessidade de 'instalar duas vezes'.
Virtualize, seriamente
O Windows Installer tem um recurso interno que deve permitir o que você deseja fazer: " Transformações de instâncias ", mas apesar de toda a minha experiência MSI eu não usei muito. Ele permite que você instale o mesmo produto várias vezes através da propriedade MSINEWINSTANCE e um conjunto de transformação na linha de comando.
Se este for um aplicativo de terceiros , eu optaria pela abordagem de virtualização que já foi recomendada. Você deve estar ciente de que pode virtualizar os pacotes usando pacotes virtuais do Microsoft App-V ou simplesmente usar Implementações VMWare ou Virtual PC (PCs virtuais em vez de pacotes virtuais).
Pacotes virtuais do Microsoft App-V e novas tecnologias de virtualização permitem alguns novos coisas em comparação com uma aplicação normal:
Se este for um aplicativo interno onde você pode ter um diálogo com a equipe de desenvolvimento, uma solução viável é criar um segundo MSI de desenvolvimento que instale a versão de pré-lançamento lado a lado com a versão de produção. Esses arquivos MSI precisarão então ser criados para poder coexistir de maneira civilizada. Isso é bastante complicado - e envolve coisas como não lutar contra as mesmas associações de arquivos, não registrar componentes COM de todo o sistema de locais diferentes, não sobrescrever as chaves de registro uns dos outros, não usar os mesmos atalhos, não sobrescrever os arquivos de configurações uns dos outros ( texto, xml, ini, etc ..). Existem muitos desafios.
Por fim, e a abordagem que geralmente escolhemos, podemos fazer com que o MSI instale uma configuração diferente com base nos parâmetros passados para ela. Assim, você pode ter uma propriedade chamada CUSTOM_ENVIRONMENT="DEV" para instalar uma instância de teste do seu aplicativo. Essa abordagem se baseia em um único MSI capaz de se instalar em diferentes tipos - embora - e, portanto, não pareça corresponder ao que você está pedindo.
Então, em resumo (na ordem da minha preferência subjetiva):
Não é possível instalar exatamente o mesmo MSI duas vezes. Você pode conseguir abrir o MSI e alterar os GUIDs para instalá-lo uma segunda vez. Esteja ciente de que desta forma existem dragões. A menos que você seja excepcionalmente sortudo ou que a instalação / produto seja excepcionalmente simples, posso garantir que não apenas sua segunda instalação não funcionará, mas também a primeira instalação também. Eu recomendaria enfaticamente resolver o problema que faz você pensar que é necessário usar uma caixa.
A única coisa que o impede de instalá-lo duas vezes é o ProductCode Guid, se você alterar, ele removerá a mensagem "este produto já está instalado" e permitirá a instalação. Isso é o que uma transformação de instância está fazendo, mas você pode fazer o mesmo abrindo-a no Orca e alterando o código do produto na tabela de propriedades.
Obviamente, mesmo que você o faça para instalar duas vezes, certifique-se de não estar sobrescrevendo nos mesmos locais.
Tags msi windows-installer