Pergunta

Estou criando instalador usando InstallShield 2010 (MSI básico), que está a ter duas características.

Primeiro recurso consiste em:

  • principal aplicativo .NET compilado como x86,
  • algumas x86 nativo terceiros DLLs do partido que são usados ??pela aplicação principal (versões x64 não estão disponíveis).

Em segundo lugar recurso contém um único componente que é uma extensão para o MS Reporting Services compilados como AnyCPU.

Durante a seqüência UI Estou usando InstallScript ação personalizada para enumerar todas as instâncias do Reporting Services disponíveis a partir de ambas as árvores de registro x86 e x64.

O usuário é solicitado a selecionar em qual instância ele quer implantar nossa extensão.

Com base na instância selecionada Estou quering registro para localização real do Reporting Services no sistema de arquivo que geralmente é algo como "C: \ Arquivos de Programas \ Microsoft SQL Server \ MSSQL.2 \ Reporting Services" e armazenar esse valor em um propriedade MSI.

Em seguida, usando a ação Set Diretório Eu estou definindo diretório de destino de um componente (a nossa extensão) para o valor desse MSI propriedade.

Tudo é instalar perfeitamente bem, a menos que você tentar instalá-lo para x64 Reporting Services em que os arquivos de extensão caso são instalados para o local errado. Mesmo tu MSI propriedade é definida como caminho correto "C: \ Program Files \ Microsoft ..." (Eu verifiquei log msi) parece que sistema está redirecionando automaticamente para "Arquivos de Programas (x86)"

.

Existe alguma solução possível para superar esse problema?

Foi útil?

Solução 2

Finalmente resolvido esta questão me sem criar 64bit MSI usando ações personalizadas InstallScript.

Primeiro ação personalizada para instalar:

  • Manualmente copiar os arquivos necessários para o local desejado (InstallScript pode acessar x64 Arquivos de Programas)
  • Salvar este local no Registro como um componente chave para este recurso para utilização durante a desinstalação

Segundo ação personalizada para desinstalação:

  • Leia instalados localização do registro (não use Sistema de Pesquisa para obter este valor devido a que vai ser auto traduzido por WindowsInstaller para "ProgramFiles (x86)")
  • Excluir arquivos

Outras dicas

Se você precisa instalar para a pasta ProgramFiles a 64 bits, use um 64-bit MSI.

Você pode alterar o INSTALLDIR para ProgramFile64 em vez ProgramFiles, isso vai ajudá-lo a instalar no caminho desejado, uma vez que a aplicação é de 32-bit de modo que o caminho será C: \ ProgramFiles (x86 ) \ Your Company Name \ o nome do produto junto com este você já fez seus componentes como de 64 bits compatível?

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