AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 896693
Accepted
Stein Åsmul
Stein Åsmul
Asked: 2018-02-11 16:39:47 +0800 CST2018-02-11 16:39:47 +0800 CST 2018-02-11 16:39:47 +0800 CST

Como posso comparar o conteúdo de dois (ou mais) arquivos MSI?

  • 772

Como posso fazer uma " comparação de conteúdo " de dois (ou mais) arquivos MSI e ver o que é realmente diferente dentro dos arquivos - em vez de fazer uma comparação binária inútil ? (que obviamente só me diz se estou lidando com cópias do mesmo arquivo ou não).

installation
  • 1 1 respostas
  • 995 Views

1 respostas

  • Voted
  1. Best Answer
    Stein Åsmul
    2018-02-11T16:39:47+08:002018-02-11T16:39:47+08:00

    Arquivos MSI

    Um arquivo MSI contém um banco de dados MS SQL primitivo embutido em um arquivo de armazenamento estruturado COM (um sistema de arquivos em um arquivo com fluxos de armazenamento de vários tipos - o antigo formato COM/OLE do MS Office).

    Você pode extrair arquivos de um MSI ou pode descompilar todo o MSI com todos os seus fluxos. Cada abordagem é descrita brevemente a seguir.

    Com a descompilação (quase) transparência total é possível, com exceção de ações personalizadas compiladas (geralmente escritas em C/C++). Código gerenciado e compilado (C#) pode realmente ser (teoricamente) descompilado.

    Para determinar (aproximadamente) o que uma ação personalizada de caixa preta realmente faz, você pode capturar uma instalação MSI usando uma ferramenta de reempacotamento - que verifica o sistema antes e depois da instalação listando quaisquer alterações - você vê o que aconteceu, mas não como tem acontecido. Muito poucas pessoas têm a necessidade deste nível de escrutínio.

    Somente Comparação de Arquivos

    Esta é uma notícia antiga, mas se tudo o que você está preocupado é comparar os arquivos incorporados no MSI / setup.exe , você pode usar uma instalação administrativa para extrair os arquivos incorporados no MSI / setup.exe e usar qualquer ferramenta de comparação de arquivos para comparar os arquivos extraídos para cada versão:

    • setup.exe /a
    • msiexec.exe /a "MySetup.msi"

    Se o MSI não tiver uma GUI adequada para permitir que você especifique uma pasta de saída interativamente, tente especificá-la por meio da linha de comando:

    • msiexec.exe /a "MySetup.msi" TARGETDIR="C:\MyOutputFolder

    Os arquivos Setup.exe contendo arquivos MSI incorporados podem ser de vários tipos, alguns ponteiros:

    • Algumas informações específicas do Installshield sobre setup.exe
    • Manipulando outros tipos de setup.exe

    Essencialmente, uma instalação administrativa extrai os arquivos de configuração dos arquivos CAB incorporados no próprio MSI (o CABS também pode ser externo) e os gera em uma estrutura de pastas organizada, refletindo aproximadamente seus destinos de destino pretendidos na instalação. Várias formas de compactação podem ser usadas em um MSI - todas tratadas pela instalação administrativa. Por favor, não descompacte arquivos MSI !

    Finalmente, o Media tableé ajustado para usar os arquivos de origem agora extraídos em vez dos arquivos CAB internos - e os arquivos CAB internos são excluídos potencialmente tornando o MSI de saída muito menor que o original. Fundamentalmente, todas as assinaturas digitais são removidas .

    Antigamente, os arquivos MSI eram armazenados em cache %SystemRoot%\Installersem seus arquivos CAB (tornando-os pequenos), mas agora eles são armazenados em cache em tamanho real, aumentando potencialmente drasticamente os requisitos de armazenamento. Usar instalações administrativas é uma maneira de reduzir esse tamanho de cache (com a penalidade das assinaturas digitais removidas). Mais sobre isso aqui: Por que a MSI exige que o arquivo .msi original prossiga com a desinstalação?

    Mais detalhes sobre instalações administrativas aqui:

    • Qual é o propósito da instalação administrativa iniciada usando msiexec /a?

    • Extraia o MSI do EXE - executando uma instalação de administrador


    "Comparação de conteúdo MSI"

    Se você quiser determinar com mais detalhes o que é diferente entre dois arquivos MSI (por exemplo, versão 1 e 2 de um pacote), você pode se envolver um pouco mais usando um visualizador de arquivos MSI adequado ou um descompilador MSI .

    Eu escrevi uma sinopse no stackoverflow.com sobre como comparar arquivos MSI . Foi-me sugerido adicionar um link aqui no serverfault.com para este conteúdo. Talvez seja útil para administradores de sistema.

    Eu não quero ter um problema de fonte dupla, então vou apenas vincular à versão stackoverflow (espero que seja uma boa prática): Como posso comparar o conteúdo de dois (ou mais) arquivos MSI? Esta resposta lista várias ferramentas (gratuitas e comerciais) que podem ajudá-lo a fazer uma "comparação real".

    As habilidades avançadas de descompilação de MSI dark.exedo kit de ferramentas WiX podem ser de interesse particular . Além da descompilação de arquivos MSI, o conteúdo vinculado também descreve como descompactarsetup.exearquivos criados com o kit de ferramentas WiX (um recurso de bootstrapper que pode instalar vários arquivos MSI e arquivos EXE incorporados em sequência). O conteúdo descompactado pode, por sua vez, ser desmembrado pelo mesmodark.exearquivo (desde que sejam arquivos MSI).

    Deixe-me também lançar um link sobre como lidar com arquivos setup.exe feitos com outras ferramentas de implantação .

    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve