Перейти к содержимому

Создать установщик 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-десктопа:

  1. Сделайте Windows-сборку приложения, чтобы в одной папке лежали MyApp.exe и его файлы. Electron Packager, PyInstaller (запущенный в Windows или в виртуальной машине с Windows, поскольку PyInstaller не умеет кросс-компилировать), GOOS=windows go build, cargo build --target x86_64-pc-windows-gnu и подобные инструменты дают именно такой результат.
  2. Запакуйте папку в .zip и загрузите.
  3. Укажите название, версию, издателя, область установки, ярлыки и языки. Добавьте .ico.
  4. Запустите сборку и скачайте 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.

Похожие руководства