Создание пакета установщика Windows
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Данные диски модели установщика Windows. Вместо написания процедурного скрипта для копирования файлов и записи записей реестра, например, вы создаете строки и столбцы в таблицах баз данных, содержащих данные файла и реестра.
Записи базы данных
Чтобы установить VSPackage, пакет установщика Windows должен содержать записи базы данных для выполнения следующих задач:
- Выполните поиск в системе, чтобы найти версии Visual Studio, поддерживаемые VSPackage (с помощью таблиц установщика Windows, включая AppSearch, CompLocator, RegLocator, DrLocator и Подпись).
- Отмените установку, если не установлена поддерживаемая версия Visual Studio или если не соблюдено другое системное требование VSPackage (с помощью таблицы LaunchCondition).
- Установите VSPackage и зависимые файлы (используя таблицы каталогов, компонентов и файлов).
- Добавьте соответствующие сведения для VSPackage в реестр (с помощью таблицы реестра).
- Интеграция VSPackage в Visual Studio путем вызова devenv.exe /setup (с помощью таблицы CustomAction).
Дополнительные сведения см. в разделе установщика Windows.
Средства установки
Различные сторонние средства установки предоставляют среду разработки для пакетов установщика Windows. Доступны следующие бесплатные средства:
- InstallShield limited edition С помощью диалогового окна «Новый проект Visual Studio» можно получить ограниченную версию InstallShield. Разверните другие типы проектов , а затем выберите «Настройка» и » Развертывание«. Выберите шаблон InstallShield.
- Набор инструментов установщика Windows Набор инструментов установщика Windows (WiX) создает пакеты установщика Windows из xml-исходных файлов. Набор инструментов WiX — это проект с открытым исходным кодом Майкрософт. Исходный код и исполняемые файлы можно скачать из набора инструментов Wix. Коммерческие продукты, которые интегрируются в Visual Studio с помощью пакета SDK Для Visual Studio, см. в Visual Studio Marketplace.
См. также
Visual Studio, C#: Как собрать *.MSI из командной строки командой devenv.exe .
Уважаемые господа, собираю классический «толстый msi», как установщик для проекта C# — WinForms — NET Framework 4.8. Пользуюсь расширением для Visual Studio Microsoft Visual Studio Installer Projects 2022 Из VS всё собирается прекрасно. Структура солюшена — простая, как морковка, один C# — проект, один — Setup — проект. и SLN, который их объединяет. я несколько часов пытался сделать сборку MSI из командной строки. Практически любой запрос на эту тему приводит к советам типа этого, этого или этого То есть, «вам нужно написать команду вида
"%devEnvDir%\devenv.exe" < ваш sln>/Rebuild /Project "Release|Any CPU"
Видимо, дьявол кроется в деталях. я пробовал выполнить этот совет с разными вариантами ключей, и лучшим результатом было, если я выполнял команду вида
"%devEnvDir%\devenv.exe" D_T_setup.vdproj /Rebuild
и она. некоторое время что то загружала, а потом — ничего не делала. Другим вариантом было появление окна с перечислением всех ключей команды devenv — такого же, как если написать devenv.exe /? Как то это вопрос не очень освещен на просторах интернета, про то, как собрать проект «мышкой из VS» — есть десятки роликов на youtube, а вот как сделать подобное из командной строки — не могу найти работающего примера. Нет ли у кого то подобного опыта? Что еще можно попробовать? Спасибо заранее за советы!
Создание exe-шника и пакета msi
Прошу прошения, у всех кто сочтет тему очень банальной и легкой в С++, но все же опишу свою проблемку.
Цель: создать msi расширение для ГуглХрома, которое попадает в расщирения браузера и регистрирует библиотеку.
Имеющиеся данные:
1. Внешняя компонента 1С («AddInNative.dll»)
2. Проект на С++ для создания exe-файла «AddInChr.exe», который как я понял должен зарегистрировать «AddInNative.dll»
3. Файл манифеста «manifest.json».
3. Проект Visual Studio для создания msi-пакета из «AddInChr.exe», «AddInNative.dll», «manifest.json».
4. Описание создания расширения с диска ИТС (1С).
AddInNative.dll — 100% рабочая.
Мои успехи: если в ГуглХроме на вкладке расширения в режиме разработчика «Загрузить распакованное решение», то оно загружается с предупреждениями, а вот при инсталяции msi-пакета в расширения не попадает.
Помогите, пожалуйста, мне разобраться.
Итак гайд, которым я пользовался
Внешние компоненты для Google Chrome
Создание адаптера для Google Chrome
Адаптер внешней компоненты для Chrome представляет консольное приложение. Адаптер, при установке, регистрирует в браузере одно или несколько уникальных имен расширений. Рекомендуется начинать имя расширения с «com.» и включать в него номер версии компоненты, например «com.YourCompanyName.YouExtensionName.1». В случае, если выпускается новая версия компоненты, номер версии в имени следует увеличить, в противном случае веб-клиент будет продолжать пользоваться старой версией компоненты.
Предположим, что в конфигурации используется компонента, у которой имя — «com.YourCompanyName.YouExtensionName.3». Разработчик компоненты выпускает новую версию компоненты. Для включения ее в конфигурацию нужно пересобрать адаптеры для Chrome, изменив в них имя на «com.YourCompanyName.YouExtensionName.4». Затем пересобрать установочные пакеты и включить их в архив, загружаемый в конфигурацию. Также, нужно изменить файл манифеста архива, изменив в нем имя на com.YourCompanyName.YouExtensionName.4. После чего загрузить архив в конфигурацию. Что происходит при запуске веб-клиента с новой конфигурацией на машине, на которой ранее была установлена предыдущая версия компоненты? Веб-клиент получает из конфигурации информацию о том, что имя компоненты — «com.YourCompanyName.YouExtensionName.4». Такое имя расширения в браузере не зарегистрировано, поэтому старая версия компоненты использована не будет. Чтобы начать использование компоненты пользователь должен выполнить ее установку. Старая версия компоненты при этом не удаляется и остается доступной для использования с более ранними конфигурациями.
За основу при создании расширения разработчик может взять проект AddInChrome из каталога example. В файле config.cpp нужно изменить значения переменных nameFilePrj, nameFileComponent. nameFilePrj должно содержать имя файла адаптера (например, AddInChrWin32.exe), nameFileComponent — имя файла внешней компоненты (например, AddInNative.dll).
Установочный пакет для Chrome для Windows создается в формате MSI.
В состав установочного пакета должны входить:
файл внешней компоненты
файл адаптера внешней компоненты
файл манифеста (в формате json)
Файл манифеста должен иметь вид:
«name»: «com.YourCompanyName.YouExtensionName»,
«description»: «Description of extension for Chrome»,
«path»: «AddInChr.exe»,
«type»: «stdio»,
«allowed_origins»: [
«chrome-extension://pbhelknnhilelbnhfpcjlcabhmfangik/»
]
>
В файле манифеста следует изменить:
name Имя расширения
description Отображаемое описание компоненты
path Путь к файлу адаптера компоненты
Остальные атрибуты менять нельзя.
Во время установки пакет должен скопировать файлы на диск компьютера и зарегистрировать расширение как плагин браузера в системном реестре. В реестре нужно создать ветку HKCU\Software\Google\Chrome\NativeMessagingHosts\com.YourCompanyName.YouExtensio nName (вместо YourCompanyName и YouExtensionName подставьте свои значения), в которой создать параметр по умолчанию строкового типа, который указывает полный путь к файлу манифеста. Содержимое атрибута ‘name’ манифеста должно совпадать с наименованием ветки реестра.
Пакет должен быть подписан цифровой подписью разработчика.
В папке example\AddInChromeSetup содержится проект Visual Studio, собирающий пакет MSI для примера компоненты. Для сборки проекта, должен быть установлен WiX Toolset. Для каждой компоненты, следует установить свои значения в файле AddInChromeSetup.wxi, а для каждой новой версии компоненты, изменять ProductCode.
Мой файл манифеста
1 2 3 4 5 6 7 8 9 10 11
{ "manifest_version": 2, "version": "1.0.0.1", "name": "com.1c.enterprise.addin.example", "description": "1C:Enterprise AddIn Extension for Chrome", "path": "AddInChr.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://pbhelknnhilelbnhfpcjlcabhmfangik/" ] }
config.cpp
1 2 3 4 5 6 7
#include "config.h" AddInComponentType typeComponent = eAddInNative; #ifdef WIN32 const char *nameFilePrj = "AddInChr.exe"; const char *nameFileComponent = "AddInNative.dll"; #endif
config.h
1 2 3 4 5
#pragma once #include "addinlib.h" extern const char *nameFilePrj; extern const char *nameFileComponent;
resource.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14
//> // Microsoft Visual C++ generated include file. // Used by AddInChrome.rc // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
AddInChrome.rc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "1C" VALUE "FileDescription", "AddInChr" VALUE "FileVersion", "1, 0, 0, 1" VALUE "InternalName", "AddInChr" VALUE "LegalCopyright", "Copyright © 2014" VALUE "OriginalFilename", "AddInChr.exe" VALUE "ProductName", "1C Chrome External Component Sample" VALUE "ProductVersion", "1, 0, 0, 1" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED
addinlib.h
1 2 3 4 5 6 7 8 9
#pragma once enum AddInComponentType { eAddInCom = 1, eAddInNative, eAddInJava, eAddInvalid = -1 };
И повторюсь: при инсталяции msi-пакета не попадает в расширения ГуглХрома и не регистрирует, соответственно, dll-ку
ПОМОГИТЕ, ПЛИЗ.
Добавлено через 16 минут
Помогите, плиз!
Как создать msi из exe visual studio
Разработчик:
Год выпуска: 2011
Версия: 8.6 Build 38980 Architect
Платформа: Windows 2000/XP/Vista/7
Язык интерфейса: Русский
Хотите купить?: $2999
Advanced Installer является средством разработки установочных пакетов на базе установщика Windows. Advanced Installer предоставляет быстрый и удобный в использовании графический пользовательский интерфейс для создания и поддержки установочных пакетов (EXE, MSI и т. д.) на основе технологии установщика Windows.
Advanced Installer — программное обеспечение с помощью которого разработчики и системные администраторы смогут без труда создавать инсталляционные пакеты в формате MSI. Программа работает под управлением ОС Windows 2000/XP/Vista, а создаваемые с ее помощью пакеты могут использоваться для развертывания приложений на платформах Microsoft Windows 9x/ME/NT/2k/XP/Vista/7.
Программа крайне проста в использовании (для своего уровня), все взаимодействие с ней осуществляется через удобный интерфейс, так что вам не придется изучать большое количество документации и писать сложных скриптов — каждое действие логично и интуитивно выполняется через систему внутренних команд. Созданные проекты сохраняются в формате XML для дальнейшего использования.
Если к примеру взять в сравнение Wise, InstallShield и другими программами для создания MSI-пакетов, Advanced Installer имеет гораздо более понятный интерфейс, с помощью которого Вы создадите свой пакет установки за считанные минуты.
- Приложение .NET Framework
Этот шаблон позволяет настроить установку для .NET Framework приложения. - Приложение Visual Studio
Этот шаблон позволяет настроить установкк для приложения Visual Studio. - Приложение Visual Basic 6.0
Этот шаблон позволяет настраивать установки для приложений Visual Basic 6.0. - Смешанный 32/64-разрядный пакет
Этот шаблон позволяет настроить смешанные 32/64-разрядные программы установки. - Установочный пакет для приложения Клиент/Сервер
Этот шаблон позволяет настраивать установки для приложений клиент/сервер. - Программа установки XNA Game
Этот шаблон позволяет создать установку для XNA Game. - Решение SharePoint
Этот шаблон позволяет создавать установки для решения SharePoint. - Приложение ASP.NET
Этот шаблон позволяет создавать установки для приложения ASP.NET. - Простой
Этот тип проекта имеет ограниченную функциональность. Вы можете устанавливать только файлы, папки, записи реестра и переменные. - Professional
У вас есть доступ ко всем функциональным возможностям предлагаемых в простом проекте, кроме того, можно создавать сопоставления файлов, определять пользовательские действия, устанавливать службы, добавлять модули слияния, настраивать пользовательский интерфейс пакета и многое другое. - Enterprise
Этот тип проекта предоставляет доступ ко всем функциям указанных в проектах Professional и Java. Кроме того он имеет редактор диалоговых окон, поддержку установки драйверов и конфигурации IIS. - Архитектор
Этот тип проекта предоставляет вам доступ ко всем функциональным возможностям, предлагаемых проектом Enterprise. Кроме того он предлагает поддержку для создания пакетов App-V. - Приложение Java
Этот расширенный тип проекта Professional с функцией указания продуктов Java. - Веб-приложение Tomcat
Этот шаблон позволяет создавать установки для веб-приложений Tomcat. - Импорт Eclipse Workspace
Этот тип проекта дает вам возможность импортировать Eclipse workspace в проект Advanced Installer. - Пакет исправления
Данный тип проекта предоставляет возможность создания пакета исправления для программ установок. - Конфигурация обновлений
Данный тип проекта предоставляет возможность создания файла конфигурации обновлений. - Программа установки надстройки Office
Этот шаблон позволяет создавать установки для надстроек Officе. - Программа установки надстройки Visual Studio
Этот шаблон позволяет создавать установки для надстроек Visual Studio. - Программа установки расширения Visual Studio
Этот проект позволяет создавать установки для Visual Studio 2010 Extension (пакет VSIX). - Программа установки надстройки продукта Adobe
Этот шаблон позволяет создавать установки для надстройки Adobe. - Модуль слияния
Этот тип проектов предоставляет возможность создания модулей слияния. - Импорт пакета MSM
Этот тип проекта дает вам возможность импортировать существующий пакет MSM в проект Advanced Installer. - Импорт модуля Wix
Этот мастер позволяет импортировать Wix модуль в проект Advanced Installer. - Windows Mobile CAB
Данный тип проекта предоставляет возможность создания пакетов CAB для платформ Windows Mobile/CE. - Перепаковка установки
Данный тип проекта предоставляет возможность создания проекта на основе захвата существующей программы установки. - MSI
Данный тип проекта предоставляет возможность импортировать существующий пакет MSI в проект Advanced Installer. - Проект установки Visual Studio
Этот мастер позволяет импортировать проект установки Visual Studio в проект Advanced Installer. - Продукт Wix
Этот мастер позволяет импортировать продукт Wix в проект Advanced Installer. - Сценарий Inno Setup
Этот мастер позволяет импортировать сценарий Inno Setup в проект Advanced Installer. - Сценарий NSIS
Этот мастер позволяет импортировать сценарий NSIS в проект Advanced Installer. - Проект InstallShield LE
Этот мастер позволяет импортировать проект, который был предварительно создан с помощью InstallShield LE для Visual Studio 2010. - Импорт других типов проектов
Вы также можете импортировать Java Eclipse Workspace из диалога создания нового проекта вкладки “Java”. Проекты MSM-файлы и модуль Wix могут быть импортированы из диалогового окна создания нового проекта на вкладке “Модуль слияния”.
