É possível executar um arquivo após a extração de um arquivo de archive auto-extraível (SFX) 7-Zip?

34

Eu estou tentando fazer um aplicativo de implantação compactado.

Atualmente, estou pegando um conjunto de arquivos que publiquei do meu IDE (Visual Studio 2008 - aplicativo publicado do WPF) e os comprimindo em um arquivo SFX 7-Zip.

Meus usuários perguntaram se podem "um clique na instalação" do exe 7-Zip. Existe uma lista de parâmetros quando estou criando o arquivo. Existe uma maneira de definir algum tipo de combinação de parâmetros para chamar o executável do instalador que é extraído?

Infelizmente, a documentação do 7-Zip não parece cobrir este cenário. Já vi vários aplicativos pagos que fazem algo semelhante a isso, mas estou tentando manter a ferramenta que estou escrevendo livre de código licenciado para que possamos usá-la internamente.

    
por Mike G 17.09.2009 / 19:18

4 respostas

30

SFX modules for installers

SFX modules for installers are included in an external package (7z_extra). You can download these modules from www.7-zip.org. SFX modules for installers (7zS.sfx and 7zSD.sfx) allow you to create your own installation program. Such a module extracts the archive to the user's temp folder, and runs a specified program, and removes the temp files after the program finishes. A self-extracting archive for installers must be created as joining 3 files: SFX_Module, Installer_Config, 7z_Archive. In addition, an optional file, Installer_Config, is allowed. You can use the following command to create an installer self-extracting archive:

copy /b 7zS.sfx + config.txt + archive.7z archive.exe

An optimally small installation package size can be achieved, if the installation files are uncompressed before including them in the 7z archive.

-y switch for installer module specifies quiet mode extraction.

Fonte

Para especificar um programa a ser executado após a descompactação, use o atributo RunProgram . Por exemplo, aqui está uma amostra config.txt que executa Install.cmd após a descompactação. O diretório de trabalho atual será o nível superior da árvore archive.7z expandida, de modo que Install.cmd deve residir.

;!@Install@!UTF-8!
Title="Your Title"
RunProgram="Install.cmd"
;!@InstallEnd@!

Os argumentos passados para o executável SFX são passados para o script Install.cmd .

    
por 17.09.2009 / 19:25
17

A solução acordada está correta, mas na verdade não ajuda a explicar o que você realmente precisa fazer !. Eu li essa e muitas outras soluções e não consegui encontrar instruções simples e completas sobre como fazer isso.

Eu estou confuso como eu estava, por favor, leia o meu post no blog, que fornece instruções passo a passo sobre como conseguir o que Molly7244 postou.

Como fazer um arquivo de extração automática que executa o seu setup.exe com o switch 7zip -sfx

Foi trazido à minha atenção que os links podem estar mortos, então aqui estão os passos do meu blog

Passo 1 - Configure sua pasta de instalação

Para facilitar, crie uma pasta c: \ Install. Aqui é onde vamos copiar todos os arquivos necessários.

Passo 2 - 7Zip seus instaladores

  1. Vá para a pasta que possui seu .msi e seu setup.exe
  2. Selecione o arquivo .msi e o setup.exe
  3. Clique com o botão direito e escolha 7Zip - > "Adicionar ao arquivo"
  4. Nomeie seu arquivo "Installer.7z" (ou um nome de sua escolha)
  5. Clique em Ok
  6. Agora você deve ter "Installer.7z".
  7. Copie esse arquivo .7z para o diretório c: \ Install

Passo 3 - Obtenha o módulo de extensão 7z-Extra sfx

Você precisa baixar o 7z-Extra.

  1. Siga este link para acessar o download 7Zip
  2. Você precisa fazer o download da versão 9.20 (como @ May-2015), pois a versão beta não contém os arquivos corretos.
  3. Um link download direto .
  4. Extraia os arquivos extras de 7zip
  5. Copie o arquivo "7zS.sfx" para c: \ Install

Passo 4 - Configure seu config.txt

Eu recomendaria usar o NotePad ++ para editar este arquivo de texto, pois você precisará codificar em UTF-8, as instruções a seguir estão usando o notepad ++.

  1. Usando o Windows Explorer vá para c: \ Install
  2. clique com o botão direito do mouse e escolha "Novo arquivo de texto" e nomeie-o como config.txt
  3. clique com o botão direito do mouse e escolha "Editar com o NotePad ++
  4. Clique no "Menu de codificação" e escolha "Codificar em UTF-8"
  5. Digite algo assim:

    ;!@Install@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;!@InstallEnd@!
    

Edite isto substituindo [SOFTWARE v1.0.0.0] pelo nome do seu produto. Notas sobre os parâmetros e opções para o arquivo de configuração estão aqui

Ponto de verificação

Agora você deve ter uma pasta "c: \ Install" com os 3 arquivos a seguir:

  1. Installer.7z
  2.     
  3. 7zS.sfx
  4.     
  5. config.txt

Passo 5 - Crie o arquivo

Estas instruções que encontrei na Web, mas em nenhum lugar, explicaram qualquer uma das 4 etapas acima.

  1. Abra uma janela cmd, Window + R - > cmd - > pressione enter
  2. Na janela de comando, digite o seguinte

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. Procure em c: \ Install e você verá agora que tem um MyInstaller.exe

  4. Você terminou

Execute o instalador

Clique duas vezes em MyInstaller.exe e ele será avisado com sua mensagem. Clique em OK e o setup.exe será executado.

P.S. Nota sobre automação

Agora que você está trabalhando no diretório c: \ Install, eu criaria um arquivo "Install.bat" e colocaria o script de cópia nele.

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

Agora você pode editar e executar o Install.bat toda vez que precisar reconstruir uma nova versão do pacote de implantação.

    
por 03.06.2015 / 15:08
6

Você também deve olhar para NSIS . Com ele, você pode criar um instalador que é compactado com o mesmo método que o 7-Zip usa ( LZMA ), então deve ser mais ou menos do mesmo tamanho e você tem controle total sobre o processo de instalação.

    
por 17.09.2009 / 19:33
0

Com base na resposta de jcrawfor74, aqui estão algumas informações adicionais:

Em vez de 7zS.sfx , você também pode usar o arquivo 7zS2.sfx . Esta é uma versão muito menor (28 kB vs. 140 kB), mas não suporta o arquivo config.txt. Então você pode simplesmente deixar isso no comando copy. Se você quer apenas criar pequenos scripts de configuração, isso permite construir arquivos EXE menores.

O módulo SFX menor não faz perguntas. Ele extrai os arquivos para uma pasta temporária como o outro módulo e, em seguida, localiza candidatos executáveis. De acordo com o código-fonte (também disponível na página de downloads), em C \ Util \ SfxSetup \ SfxSetup.c, ele pesa arquivos de maneira diferente com base no nome e na extensão e, em seguida, escolhe o arquivo de pontuação mais alto.

Ambos os módulos SFX são executados automaticamente como Administrador , pelo menos no Windows 10, e isso não pode ser configurado. Embora esse comportamento possa ser desejável para configurações de todo o sistema, isso nem sempre pode ser o caso. Além disso, essa decisão é baseada apenas nos dados da versão do arquivo, pois não há nenhum manifesto incluído que informe explicitamente ao Windows o que fazer. A compatibilidade do Windows examina o arquivo e encontra sequências como "Configuração" que levam ao prompt de elevação.

Se você precisa de um módulo SFX que não solicite permissões de Admin, você pode reconstruir o módulo SFX a partir da fonte ou, mais simples, editar suas informações de versão de arquivo com um editor de recursos como este . Basta remover a palavra "Setup" do campo FileDescription, no caso do Resource Hacker mencionado compilar o arquivo e salvar o arquivo EXE. Você também pode executar essa etapa no arquivo 7zS.sfx ou 7zS2.sfx diretamente e mantê-lo em algum lugar para poder usá-lo para criar pacotes SFX não elevados. E você pode usar isso para personalizar totalmente as informações da versão do arquivo para colocar o nome do seu produto ou qualquer coisa nele que descreva a carga útil.

    
por 18.09.2018 / 11:55