API для создания инсталляторов в Windows

Существует множество инструментов для создания установщиков в Windows (InstallShield, InnoSetup, NSIS и многие другие). Все инструменты, которые я видел, попадают в одну или обе эти категории.

  • Указать и щелкнуть. Хороший графический интерфейс для создания установщика, но файл определения / проекта установщика не может быть отредактирован вручную.
  • Текстовый файл: нет (официального) графического интерфейса. Установщик компилируется из определения в текстовом файле, который редактируется вручную.

Все установщики, которые я создаю, определены с использованием DSL (представленных в виде файлов YAML), поэтому об использовании графического интерфейса не может быть и речи, а создание текстового файла является громоздким, но выполнимым.

Что мне действительно нужно, так это инструмент, который предоставляет (полный) API, с помощью которого я могу управлять созданием установщика. Существуют ли такие инструменты?

Обновлено: я также хотел бы услышать об инструментах, не основанных на MSI. MSI не является обязательным (скорее, наоборот ...)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
438
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Для этой цели в Wix 3.0 бета включена поддержка .NET. Не знаю, насколько хорошо это работает, но в нем есть документация. Это набор типов для управления процессом создания установки и всего прочего, поэтому я не думаю, что вам даже нужно писать строку WiX XML, если вы этого не хотите.

WiX - отличный инструмент, но вам придется много заниматься прямым кодированием, чтобы все стало возможным. К счастью, документация довольно хороша, и есть несколько инструментов с графическим интерфейсом, таких как WixEdit на SourceForge, чтобы помочь в этом процессе.

WiX 3.0 имеет среду программирования, в которой вам не нужно писать файлы wix. Проверить это.

Jeff Yates 03.10.2008 02:02

Ну, есть Windows Installer API, который вы можете использовать для создания файлов MSI напрямую, но я думаю, вам лучше использовать WiX.

«Прямое кодирование» будет намного меньше, чем работа с API установщика Windows напрямую, я предполагаю, что это, вероятно, слишком «низкий уровень» для того, что вам нужно. В зависимости от того, что вы хотите сделать, вы можете использовать WiX для создания MSI, а затем настроить его с помощью API.

Что не так с генерацией XML? Это действительно будет ваш самый простой вариант ... вам не нужно будет вручную редактировать его, просто напишите свой собственный код для генерации необходимого XML из ваших файлов DSL и нескольких шаблонов.

Создание XML приемлемо - я могу добавить свой собственный функциональный слой поверх. Создание текстового файла а-ля NSIS (который больше относится к языку программирования) не так приемлемо, поскольку это гораздо более свободная форма, и мне приходится иметь дело с цитированием и т. д.

JesperE 03.10.2008 13:40

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