|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.04.2015, 10:46 | #1 |
Новичок
Джуниор
Регистрация: 22.04.2015
Сообщений: 6
|
Создание 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.YouExtensionNa me.1». В случае, если выпускается новая версия компоненты, номер версии в имени следует увеличить, в противном случае веб-клиент будет продолжать пользоваться старой версией компоненты. Предположим, что в конфигурации используется компонента, у которой имя - «com.YourCompanyName.YouExtensionNa me.3». Разработчик компоненты выпускает новую версию компоненты. Для включения ее в конфигурацию нужно пересобрать адаптеры для Chrome, изменив в них имя на «com.YourCompanyName.YouExtensionNa me.4». Затем пересобрать установочные пакеты и включить их в архив, загружаемый в конфигурацию. Также, нужно изменить файл манифеста архива, изменив в нем имя на com.YourCompanyName.YouExtensionNam e.4. После чего загрузить архив в конфигурацию. Что происходит при запуске веб-клиента с новой конфигурацией на машине, на которой ранее была установлена предыдущая версия компоненты? Веб-клиент получает из конфигурации информацию о том, что имя компоненты - «com.YourCompanyName.YouExtensionNa me.4». Такое имя расширения в браузере не зарегистрировано, поэтому старая версия компоненты использована не будет. Чтобы начать использование компоненты пользователь должен выполнить ее установку. Старая версия компоненты при этом не удаляется и остается доступной для использования с более ранними конфигурациями. За основу при создании расширения разработчик может взять проект AddInChrome из каталога example. В файле config.cpp нужно изменить значения переменных nameFilePrj, nameFileComponent. nameFilePrj должно содержать имя файла адаптера (например, AddInChrWin32.exe), nameFileComponent - имя файла внешней компоненты (например, AddInNative.dll). Установочный пакет для Chrome для Windows создается в формате MSI. В состав установочного пакета должны входить: файл внешней компоненты файл адаптера внешней компоненты файл манифеста (в формате json) Файл манифеста должен иметь вид: { "name": "com.YourCompanyName.YouExtensionNa me", "description": "Description of extension for Chrome", "path": "AddInChr.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://pbhelknnhilelbnhfpcjlcabhmfangik/" ] } В файле манифеста следует изменить: Наименование Описание name Имя расширения description Отображаемое описание компоненты path Путь к файлу адаптера компоненты Остальные атрибуты менять нельзя. Во время установки пакет должен скопировать файлы на диск компьютера и зарегистрировать расширение как плагин браузера в системном реестре. В реестре нужно создать ветку HKCU\Software\Google\Chrome\NativeM essagingHosts\com.YourCompanyName.Y ouExtensionName (вместо YourCompanyName и YouExtensionName подставьте свои значения), в которой создать параметр по умолчанию строкового типа, который указывает полный путь к файлу манифеста. Содержимое атрибута 'name' манифеста должно совпадать с наименованием ветки реестра. Пакет должен быть подписан цифровой подписью разработчика. В папке example\AddInChromeSetup содержится проект Visual Studio, собирающий пакет MSI для примера компоненты. Для сборки проекта, должен быть установлен WiX Toolset. Для каждой компоненты, следует установить свои значения в файле AddInChromeSetup.wxi, а для каждой новой версии компоненты, изменять ProductCode. |
22.04.2015, 10:47 | #2 |
Новичок
Джуниор
Регистрация: 22.04.2015
Сообщений: 6
|
Мой файл манифеста
{ "manifest_version": 2, "version": "1.0.0.1", "name": "com.1c.enterprise.addin.exampl e", "description": "1C:Enterprise AddIn Extension for Chrome", "path": "AddInChr.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://pbhelknnhilelbnhfpcjlcabhmfangik/" ] } config.cpp #include "config.h" AddInComponentType typeComponent = eAddInNative; #ifdef WIN32 const char *nameFilePrj = "AddInChr.exe"; const char *nameFileComponent = "AddInNative.dll"; #endif config.h #pragma once #include "addinlib.h" extern const char *nameFilePrj; extern const char *nameFileComponent; resource.h //{{NO_DEPENDENCIES}} // 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 #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS #include "afxres.h" #undef APSTUDIO_READONLY_SYMBOLS #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 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 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 #endif // not APSTUDIO_INVOKED addinlib.h #pragma once enum AddInComponentType { eAddInCom = 1, eAddInNative, eAddInJava, eAddInvalid = -1 }; И повторюсь: при инсталяции msi-пакета не попадает в расширения ГуглХрома и не регистрирует, соответственно, dll-ку ПОМОГИТЕ, ПЛИЗ!!! |
22.04.2015, 10:53 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Так вы нам не программу показывайте а то, что вы делаете в MSI.
У инсталяторов тоже есть исходники - вот их и показывайте... |
22.04.2015, 10:58 | #4 |
Новичок
Джуниор
Регистрация: 22.04.2015
Сообщений: 6
|
2 секунды, сбрасываю
Хотя у меня такое чувство, что exe-шник тоже не работает, т.к. он же ведь должен dll-ку подгружать product.wxs <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <?include AddInChromeSetup.wxi?> <Product Id="$(var.ProductCode)" Codepage="1252" Language="1033" Manufacturer="$(var.Manufacturer)" Name="$(var.ProductName)" UpgradeCode="$(var.UpgradeCode)" Version="$(var.ProductVersion)"> <Package Description="$(var.Description)" Comments="$(var.Description)" InstallerVersion="300" Languages="1033" Keywords="Installer,MSI,Database" InstallPrivileges="limited" InstallScope="perUser" Compressed="yes" Manufacturer="$(var.Manufacturer)" Platform="x86" /> <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> <MediaTemplate EmbedCab="yes" /> <Feature Id="ProductFeature" Title="AddIn Example Chrome" Level="1"> <ComponentGroupRef Id="ProductComponents" /> </Feature> <Property Id="ARPCONTACT" Value="$(var.Manufacturer)" /> <Property Id="ARPURLINFOABOUT" Value="$(var.CompanyURL)" /> <Property Id="ALLUSERS" Admin="no" Hidden="yes"/> </Product> <Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="AppDataFolder"> <Directory Id="MyCompanyDir" Name="$(var.Manufacturer)"> <Directory Id="INSTALLFOLDER" Name="AddInChrome" /> </Directory> </Directory> </Directory> </Fragment> <Fragment> <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> <Component Guid="$(var.FileComponentsGuid)" Id="main" DisableRegistryReflection="yes" > <File Id="binFile" Source="AddInChr.exe" /> <File Source="com.1c.enterprise.addin.exa mple.win.json" Id="json" Name="$(var.AddInName).json" /> <File Id="addin" Source="AddInNative.dll" /> <RemoveFolder Id="MyCompanyDir" Directory="MyCompanyDir" On="uninstall"/> <RemoveFolder Id="inst" Directory="INSTALLFOLDER" On="uninstall"/> <RegistryKey Id="reg" ForceCreateOnInstall="yes" Root="HKCU" Key="Software\Google\Chrome\NativeM essagingHosts"> <RegistryKey Key="$(var.AddInName)" ForceCreateOnInstall="yes"> <RegistryValue KeyPath="yes" Type="string" Value="[INSTALLFOLDER]$(var.AddInName).json" /> </RegistryKey> </RegistryKey> </Component> </ComponentGroup> </Fragment> </Wix> |
22.04.2015, 10:58 | #5 |
Новичок
Джуниор
Регистрация: 22.04.2015
Сообщений: 6
|
AddInChromeSetup.wxi
<?xml version="1.0" encoding="utf-8"?> <Include> <?define ProductName="AddIn example for Chrome" ?> <?define ProductVersion="1.0.0.1" ?> <?define ProductCode="b7bc7c6f-9a4e-4973-be84-eca8e3427c97"?> <?define UpgradeCode="06a81104-1e30-463d-87e1-e8a79b4c682a"?> <?define Manufacturer="MyCompany"?> <?define CompanyURL="www.MyCompany.com"?> <?define Description="Setup AddIn example for Chrome"?> <?define AddInName="com.1c.enterprise.addin. example"?> <?define FileComponentsGuid="{34316F5C-5C1F-73EC-AE5C-4BB5ED46E294}"?> </Include> AddInChromeSetup.wixproj <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">x86</Platform> <ProductVersion>3.6</ProductVersion> <ProjectGuid>{f7b113ab-fd62-409a-863d-80fb937bd69b}</ProjectGuid> <SchemaVersion>2.0</SchemaVersion> <OutputName>AddInChromeSetup</OutputName> <OutputType>Package</OutputType> <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Micros oft\WiX\v3.x\Wix.targets</WixTargetsPath> |
22.04.2015, 10:58 | #6 |
Новичок
Джуниор
Регистрация: 22.04.2015
Сообщений: 6
|
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsof t\WiX\v3.x\Wix.targets</WixTargetsPath>
</PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <OutputPath>$(SolutionDir)\bin\</OutputPath> <IntermediateOutputPath>obj\$(Confi guration)\</IntermediateOutputPath> <DefineConstants>Debug</DefineConstants> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <OutputPath>$(SolutionDir)\bin\</OutputPath> <IntermediateOutputPath>obj\$(Confi guration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> <DefineConstants>Debug</DefineConstants> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> <DefineConstants>Debug</DefineConstants> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> <DefineConstants>Debug</DefineConstants> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ia64' "> <DefineConstants>Debug</DefineConstants> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ia64' "> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> <DefineConstants>Debug</DefineConstants> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> <OutputPath>bin\$(Platform)\$(Confi guration)\</OutputPath> <IntermediateOutputPath>obj\$(Platf orm)\$(Configuration)\</IntermediateOutputPath> </PropertyGroup> <ItemGroup> <Compile Include="Product.wxs" /> </ItemGroup> <ItemGroup> <Content Include="AddInChromeSetup.wxi" /> </ItemGroup> <Import Project="$(WixTargetsPath)" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Wix.targets. <Target Name="BeforeBuild"> </Target> <Target Name="AfterBuild"> </Target> --> </Project> |
22.04.2015, 10:59 | #7 |
Новичок
Джуниор
Регистрация: 22.04.2015
Сообщений: 6
|
Простите пожалуйста, если чего-то лишнее сбросил. Не силен в VS и С
|
25.02.2019, 19:39 | #8 |
Новичок
Джуниор
Регистрация: 25.02.2019
Сообщений: 1
|
Добрый день. Столкнулся с такой же проблемой. У Вас то нибудь получилось?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Установка Msi пакета | РагнаР | C# (си шарп) | 0 | 10.10.2012 21:05 |
Запрет скачивать файлы по маске (*.exe,*.msi,*.mp3) | Noor | Софт | 10 | 16.05.2012 10:55 |
Запуск программы из EXE-шника | EPaul | Общие вопросы Delphi | 3 | 29.08.2011 12:30 |
Защита EXE-шника | Bat{CMD}_Men | Общие вопросы Delphi | 9 | 14.09.2009 15:21 |
Два неубиваемых exe'шника | Veiron | Общие вопросы Delphi | 9 | 22.05.2009 18:29 |