Создать установщик Windows на Mac или Linux
Как собрать Setup.exe, если вы разрабатываете на macOS или Linux: от кросс-компиляции NSIS до сборки прямо в браузере, и как протестировать результат без собственного ПК с Windows.
Обновлено 31 октября 2026 г. · 3 мин чтения
Немало приложений для Windows разрабатывается на Mac: приложения на Electron и Tauri, инструменты на Python, игры, кросс-компилированные бинарники на Go и Rust. Само приложение собирается без проблем; застревают на установщике, потому что классические инструменты для его создания рассчитаны на машину с Windows. Ниже — способы обойти это ограничение и варианты тестирования установщика, когда Windows под рукой нет.
Вариант 1: собрать установщик в браузере
ExeTup собирает Setup.exe в облаке. С Mac или Linux-десктопа:
- Сделайте Windows-сборку приложения, чтобы в одной папке лежали
MyApp.exeи его файлы. Electron Packager, PyInstaller (запущенный в Windows или в виртуальной машине с Windows, поскольку PyInstaller не умеет кросс-компилировать),GOOS=windows go build,cargo build --target x86_64-pc-windows-gnuи подобные инструменты дают именно такой результат. - Запакуйте папку в .zip и загрузите.
- Укажите название, версию, издателя, область установки, ярлыки и языки. Добавьте
.ico. - Запустите сборку и скачайте
Setup.exe.
На вашу машину ничего не устанавливается, и никакого скрипта нет. Подробнее о параметрах — в статье как сделать Setup.exe.
Вариант 2: скомпилировать NSIS локально
Компилятор NSIS работает в macOS и Linux:
brew install makensis # macOS
sudo apt install nsis # Debian, Ubuntu
makensis installer.nsi
Скрипт .nsi вы пишете сами (что это означает, описано в статье NSIS-установщик онлайн). Получившийся установщик идентичен скомпилированному в Windows. Это правильный выбор, если вы хотите держать сборку полностью внутри собственного CI и готовы поддерживать скрипт.
Вариант 3: Inno Setup под Wine
Inno Setup существует только для Windows, но его компилятор работает под Wine. Установите Wine, запустите в нём установщик Inno Setup, а затем вызывайте ISCC.exe через Wine из своего скрипта сборки. Это работает, и некоторые проекты так и выпускаются; будьте готовы к небольшим трудностям с путями и шрифтами. Сравнение — в статье альтернатива Inno Setup.
Вариант 4: Windows-сборка в CI
GitHub Actions, GitLab и Azure Pipelines предлагают раннеры на Windows. Соберите там приложение и установщик, установив NSIS или Inno Setup на подготовительном шаге, и скачайте артефакт. Хорошо подходит командам с конвейером релизов; тяжеловато для разработчика-одиночки, выпускающего небольшую утилиту.
Создание .ico на Mac
Значки Windows — это файлы .ico, содержащие несколько размеров. Из PNG размером 256×256:
brew install imagemagick
magick icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico
Используйте один и тот же файл и для бинарника приложения (--icon у Electron Packager, --icon у PyInstaller), и для установщика.
Тестирование без ПК с Windows
Перед выпуском установщик стоит запустить хотя бы один раз. Варианты, примерно по возрастанию усилий:
- Виртуальная машина с Windows. На Apple silicon UTM или Parallels с Windows 11 ARM запускают x64-приложения через эмуляцию достаточно хорошо, чтобы проверить установку. VirtualBox и VMware работают на Intel Mac и в Linux. Лицензия Microsoft разрешает ознакомительные установки для тестирования.
- Облачный рабочий стол Windows. Windows 365, Azure Virtual Desktop или виртуальная машина с Windows у любого провайдера с почасовой оплатой.
- Машина коллеги или клиента для финальной проверки: запустите установщик, откройте приложение из меню «Пуск», удалите его через «Параметры» Windows.
Wine в macOS может запускать некоторые Windows-приложения, но это ненадёжный способ оценить установщик.
Частые вопросы
Можно ли собрать само Windows-приложение на Mac?
Часто да. Electron, Tauri, Go, Rust и .NET умеют собирать под Windows из macOS. PyInstaller не умеет кросс-компилировать, поэтому Python-приложения замораживайте в Windows или в виртуальной машине с Windows, а затем собирайте установщик из полученной папки.
Нужны ли Wine или виртуальная машина для ExeTup?
Нет. Сборка выполняется в облаке, а результат скачивается в браузере. Виртуальная машина пригодится только для последующего тестирования установщика.
Будет ли установщик, скомпилированный на Mac, вести себя в Windows иначе?
Нет. NSIS-установщик, скомпилированный makensis в macOS, побайтово эквивалентен скомпилированному в Windows, а облачная сборка ExeTup использует тот же компилятор.
Как подписать установщик с Mac?
Для подписи кода через signtool нужна Windows, но osslsigncode подписывает исполняемые файлы Windows в macOS и Linux тем же сертификатом. О том, почему подпись важна, читайте в руководстве по SmartScreen.
Похожие руководства
- Как создать Setup.exe для приложения Windows (без кода)Что на самом деле делает Setup.exe, три способа его создать и как за несколько минут превратить папку с приложением в профессиональный установщик без написания скрипта.
- Создание установщика Windows для приложения на ElectronУпакуйте приложение Electron с помощью Electron Packager или Forge и превратите полученную папку в Setup.exe с мастером установки, ярлыками и деинсталлятором без настройки electron-builder.
- Создать NSIS-инсталлятор онлайн, не написав ни строчки скриптаЧто такое NSIS, как выглядит минимальный скрипт .nsi и как получить стандартный Setup.exe на NSIS с мастером Modern UI, ярлыками и деинсталлятором, заполнив форму вместо написания скрипта.