Существует множество инструментов для создания установщиков в Windows (InstallShield, InnoSetup, NSIS и многие другие). Все инструменты, которые я видел, попадают в одну или обе эти категории.
Все установщики, которые я создаю, определены с использованием DSL (представленных в виде файлов YAML), поэтому об использовании графического интерфейса не может быть и речи, а создание текстового файла является громоздким, но выполнимым.
Что мне действительно нужно, так это инструмент, который предоставляет (полный) API, с помощью которого я могу управлять созданием установщика. Существуют ли такие инструменты?
Обновлено: я также хотел бы услышать об инструментах, не основанных на MSI. MSI не является обязательным (скорее, наоборот ...)





Для этой цели в Wix 3.0 бета включена поддержка .NET. Не знаю, насколько хорошо это работает, но в нем есть документация. Это набор типов для управления процессом создания установки и всего прочего, поэтому я не думаю, что вам даже нужно писать строку WiX XML, если вы этого не хотите.
WiX - отличный инструмент, но вам придется много заниматься прямым кодированием, чтобы все стало возможным. К счастью, документация довольно хороша, и есть несколько инструментов с графическим интерфейсом, таких как WixEdit на SourceForge, чтобы помочь в этом процессе.
Ну, есть Windows Installer API, который вы можете использовать для создания файлов MSI напрямую, но я думаю, вам лучше использовать WiX.
«Прямое кодирование» будет намного меньше, чем работа с API установщика Windows напрямую, я предполагаю, что это, вероятно, слишком «низкий уровень» для того, что вам нужно. В зависимости от того, что вы хотите сделать, вы можете использовать WiX для создания MSI, а затем настроить его с помощью API.
Что не так с генерацией XML? Это действительно будет ваш самый простой вариант ... вам не нужно будет вручную редактировать его, просто напишите свой собственный код для генерации необходимого XML из ваших файлов DSL и нескольких шаблонов.
Создание XML приемлемо - я могу добавить свой собственный функциональный слой поверх. Создание текстового файла а-ля NSIS (который больше относится к языку программирования) не так приемлемо, поскольку это гораздо более свободная форма, и мне приходится иметь дело с цитированием и т. д.
WiX 3.0 имеет среду программирования, в которой вам не нужно писать файлы wix. Проверить это.