SFX запускает файл после извлечения в зависимости от разрядности ОС

Мне нужно создать самораспаковывающиеся архивы, которые после распаковки запускают разные исполняемые файлы в зависимости от разрядности операционной системы.

До сих пор я делал это с помощью файлов WinRAR и BAT, но быстрая прошивка окна командной строки перед окном основного приложения выглядит подозрительно.

Итак, я ищу лучший вариант, но пока не нашел.

1 ответ

Вы можете написать 32-битное приложение с графическим интерфейсом на C/C++/C#, не открывая окно, которое, например, определяет с помощью getenv_s или getenv переменную ProgramFiles(x86) существует (только в 64-битной Windows) и запускается рядом с соответствующим основным приложением. Этот исполняемый файл сжимается в архив SFX и выполняется архивом SFX.

Или вы кодируете свой собственный модуль SFX. Исходники для распаковки архива RAR можно скачать с RARLAB.

Или вы пишете сценарий Windows для определения ширины в битах Windows и запуска соответствующего основного приложения и выполняете этот сценарий с помощью SFX-архива с помощью wscript.exe, который не открывает консольное окно, как его аналог cscript.exe.

Или вы создаете 64-битный SFX, который может быть запущен только в 64-битной Windows, и 32-битный SFX, который может быть запущен в 32-битной, а также 64-битной Windows и предлагает оба для загрузки. Большинство пользователей 64-битной Windows, скорее всего, скачают 64-битную версию.

Другие вопросы по тегам