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-битную версию.