Создание собственного диалога с использованием C # в MSI Installer - PullRequest
4 голосов
/ 07 ноября 2011

У нас (моя команда проекта) есть существующий установщик MSI для Windows-приложения VS 2010.Существует файл лицензии, который мы используем для проверки правильности установки Windows.Для установки мы используем стандартный проект установки VS.

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

Я использовал инструмент Orca, чтобы изменить пользовательский интерфейс длядобавление кнопки рядом с существующим текстовым полем в интерфейсе установки.

Мой вопрос: возможно ли написать какой-нибудь управляемый код на C # для отображения, скажем, диалог открытия файла, чтобы выбрать файл лицензии, а затем заполнить текстовое поле.Я понимаю, что это возможно, написав код C / C ++.Я вижу много людей, использующих набор инструментов WIX для создания установочных файлов.Прямо сейчас я не могу создать новый проект установщика установки, потому что он включает в себя изучение WIX, и у меня нет времени для этого сейчас.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Это возможно (см. Такие инструменты, как DTF, который может обернуть код .NET в неуправляемую DLL), но для уровня сложности настраиваемого действия, которое вызывает GetOpenFileName и MsiSetProperty Я бы предложил избежать дополнительной зависимости от .NET Framework.

1 голос
/ 07 ноября 2011

Я не верю, что это возможно.Стандартный MSI не поддерживает управляемый код, поэтому вы не сможете писать управляемый диалог.Однако вы можете написать загрузчик, чтобы прикрепить пользовательский графический интерфейс к вашему установщику.Это довольно сложно, хотя.

Я знаю, что вы написали, что вы не можете конвертировать в WIX на этом этапе, но я могу заверить вас, что если вы хорошо знаете структуру MSI, изучить ее будет довольно легко.И затем, вы можете использовать SharpSetup для создания C # GUI для вашего установщика.

...