Criando um único arquivo executável a partir de um diretório no Windows?

0

Há uma resposta lá, mas tem dois anos e não fornece informações sobre como fazer isso.

Situação: Eu tenho uma pasta com um arquivo executável, algumas dlls necessárias e algumas imagens. Eu quero empacotar tudo isso em um único arquivo executável. Se executado, executará o arquivo executável.

Eu encontrei esta postagem de superusuário . No entanto, não parece oferecer uma solução.

Se você estiver familiarizado com o Python, há um aplicativo chamado PyInstaller. Ele cria executáveis de arquivo único a partir do código fonte do python.

Não tenho certeza sobre o funcionamento interno exato dele, mas geralmente é algo assim:

  • Quebra o diretório com o executável em um novo executável, ex app.exe
  • o novo executável executa um programa, que descompacta o diretório oculto em uma pasta temporária, uma pasta chamada _MEIxxxxx, x sendo números. Por exemplo: C:\Users\Me\AppData\Local\Temp\_MEI188722
  • executa o programa a partir dessa pasta.

Pelo que eu li, eles usam hackery dark-magic para fazer esse trabalho. Eu estou querendo saber se existe um programa que faz esse tipo de magia negra para arquivos não-python.

    
por Azeirah 04.05.2014 / 01:52

2 respostas

0

O Windows não permite que um aplicativo seja iniciado de dentro de um contêiner (como um arquivo zip) de maneira nativa. É por isso que o PyInstaller descompacta para um diretório temporário para executar o aplicativo real.

Compressores como ZIP e 7Zip oferecem a capacidade de criar um executável de extração automática. Qual é o arquivo compactado regular mais o código executável necessário para descompactar. Embalado em um único arquivo. O 7zip oferece a opção de criar arquivos auto-extraíveis para instaladores. Talvez você possa usar essa opção para executar um programa padrão em vez de um instalador: link

Você pode configurá-lo para executar qualquer arquivo desejado após a extração. Não tenho certeza se você poderá remover o prompt.

    
por 04.05.2014 / 03:04
0

O nsis link seria a melhor opção que já vi. Eu fiz vários wrappers para aplicativos de trabalho que não queremos que os usuários cutucando os arquivos usados para reparar seu pc etc. Eu apenas construí um front-end de scanner de vírus essa semana que os downloads automáticos msert / mcafee stinger / mcafee rootkit usando o proxy corp e, em seguida, executa todos os três aplicativos para os técnicos.

você poderia fazer o que você está pedindo com um modelo / exemplo padrão, na seção principal defina o dir out [$ OUTDIR% temp% _MEI188722] e adicione uma linha [file yourapp.exe] para cada arquivo no diretório original que as necessidades do programa. Em seguida, use uma linha execwait para executar o aplicativo em questão. um comando para dormir 20ms e, em seguida, excluir% temp% _MEI188722 para que os arquivos sejam removidos depois que eles não estiverem sendo usados.

Definir o instalador para o modo silencioso impediria a exibição de qualquer caixa de diálogo do instalador padrão e o aplicativo só seria carregado após um momento. ou você poderia criar páginas de diálogo personalizadas se precisasse que o usuário selecionasse alguma opção primeiro ou queria que o aplicativo retornasse uma mensagem se tivesse algum tipo de erro. Os tutoriais e a comunidade são bastante ativos e ajudam bastante, então, quando você se acostumar com o modo como o nsis faz as coisas, ele deve ser direto. link este é um programa útil para permitir que você edite mais facilmente o arquivo de script para permitir que você faça o exe.

    
por 04.05.2014 / 03:44