Немного усовершенствовал проект инсталлятора на Wix для Visio. Чтобы упростить использование данного шаблона, опубликовал его как шаблон проекта для Visual Studio в Visual Studio Galery. Так как это первый раз когда я что-либо туда публикую, было интересно разобраться что нужно сделать чтобы все заработало:
На самом деле, ничего сложного в создании такого шаблона нет. Хорошее введение можно найти на codeproject. Там представлен хороший обзор, как это все работает. Ну в любом случае теперь можно создать проект инсталлятора для Visio, основанном на WiX, так же как и любой другой проект в Visual Studio, вводное видео дальше в этой статье.
Обратите внимание, что для использования шаблона WiX должен быть установлен =)
Воодное видео:
http://www.youtube.com/watch?v=-LkSCQTp3D8
Добавляем один шаблон к проекту:
http://www.youtube.com/watch?v=BuUByjrRswA
Исходный код проекта доступен на github (внимание — для сборки требуется Visual Studio SDK).
Инсталлятор, созданный при помощи данного шаблона, должен работать "из коробки" для Visio 2007, 2010, 2013, все языки, 32-bit и 64-bit. Для Visio 2003 (еще есть у кого-то?) нужны дополнительные телодвижения (нужно добавить для него идентификаторы, см. таблицу далее).
Вообще, преимущества создания инсталлятора с помощью WiX:
- Все может быть в одном проекте Visual Studio, включая код, инсталлятор, и т.д. что упрощает процесс сборки.
- Так как исходный код инсталлятора — XML, его можно положить в систему контроля версий.
- Создается MSI-инсталлятор. Windows Installer является технологией установки "по умолчанию". MSI-инсталлятор также легко использовать в организации для установки через групповую политику.
- Если сравнивать со встроенным Visual Studio Deployment Project, вы можете сделать любой пользовательский интерфейс для инсталлятора.
- Обновление поддерживается "из коробки"
- Microsoft сам его использует — например VisioSDK построен с помощью WIX
Технические детали.
Официальной информации об таблицах Windows Installer для Visio не так много, я нашел только KB832029 (для Visio 2007). Так что дальнейшая информация может быть не на 100% верной. Но в любом случае, ниже представлено описание данных таблицы PublishComponent, которая используется для публикации данных для Visio, для текущих версий Microsoft Visio:
Колонка | Формат | Описание |
Component ID | <guid> | Templates: All versions: {CF1F488D-8D6F-499C-A78D-026E1DF38100} Visio 2007: {6D9D8B6F-D0EF-4BC0-8DD4-09DD6CE2B000} Visio 2010: {6D9D8B6F-D0EF-4BC0-8DD4-09DD6CE2B100} Visio 2013: {6D9D8B6F-D0EF-4BC0-8DD4-09DD6CE2B200} Stencils: All versions: {CF1F488D-8D6F-499C-A78D-026E1DF38101} Visio 2007: {6D9D8B6F-D0EF-4BC0-8DD4-09DD6CE2B001} Visio 2010: {6D9D8B6F-D0EF-4BC0-8DD4-09DD6CE2B101} Visio 2013: {6D9D8B6F-D0EF-4BC0-8DD4-09DD6CE2B201} |
Qualifier | LanguageId\FileName | Для Visio 2007 и старше, можно использовать ‘1’ как LocaleId для установки на всех языках. Для Visio 2003 и ниже, нужно указывать ВСЕ языки явно (по строчке на язык) |
AppData | Stencils: MenuPath|AltNames|QuickShapeCount|Bits Templates: MenuPath|AltNames|FeaturedTemplate|Bits |
— MenuPath: Путь в меню. Обратный слеш как разделитель. — AltNames: Список альтернативных имен стенсила/шаблона. Можно использовать для того чтобы ссылаться на стенсил, например из API, или в поиске. — QuickShapeCount: Число «quick shapes». Первые N фигур станут «quick shapes». Имеет смысл только для Visio 2010 и старше. — Bits: Для какой редакции Visio публиковать (-1 = все, 32 = 32bit, 64 = 64bit). Имеет смысл только для Visio 2010 и старше. — Featured template: Показывает шаблон на StartPage. Имеет смысл только для Visio 2007. Для более старших версий шаблон будет показан там в любом случае. |