Wix中注册c#开发的Activex控件
一、使用regasm.exe将DLL提取出TLB文件
regasm.exe "Tools.HMIBrowserDetector.dll" /tlb
二、使用wix的heat.exe程序
用法如下:
heat file <*.dll> -out <*.wxs>
其中<*.dll>是你用c#编写的activex的dll文件名,<*.wxs>是你要输出的wxs文件名。
heat.exe "Tools.HMIBrowserDetector.dll" -out "Tools.HMIBrowserDetector.dll.wix"
heat.exe "Tools.HMIBrowserDetector.tlb" -out "Tools.HMIBrowserDetector.tlb.wix"
文件生成OK后,打开<*.WXS>文件
1.将其中的<DirectoryRef Id="*">修改成你的目录名,比如<DirectoryRef Id="INSTALLDIR">
2.将<Component Id="*" Guid="PUT-GUID-HERE">中的PUT-GUID-HERE换成你的ACTVIEX的GUID,比如[Guid("3C719C70-EBB6-46A4-B9C5-6A926BDC004C")]的3C719C70-EBB6-46A4-B9C5-6A926BDC004C
最终效果:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Component Id="cmp2655A93590AF35557BE69214C9637225" Guid="3C719C70-EBB6-46A4-B9C5-6A926BDC004C">
<Class Id="{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}" Context="InprocServer32" Description="xxxxx.Tools.HMIBrowserDetector.BrowserDetector" ThreadingModel="both" ForeignServer="mscoree.dll">
<ProgId Id="HMIBrowser.Detector" Description="xxxxx.Tools.HMIBrowserDetector.BrowserDetector" />
</Class>
<File Id="fil21B157A69D41BF1742AD629A14C5609E" KeyPath="yes" Source="SourceDir\Build\xxxxx.Tools.HMIBrowserDetector.dll" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32\2.0.2015.1016" Name="Class" Value="xxxxx.Tools.HMIBrowserDetector.BrowserDetector" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32\2.0.2015.1016" Name="Assembly" Value="xxxxx.Tools.HMIBrowserDetector, Version=2.0.2015.1016, Culture=neutral, PublicKeyToken=366fc8dc0356ba75" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32\2.0.2015.1016" Name="RuntimeVersion" Value="v4.0.30319" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32\2.0.2015.1016" Name="CodeBase" Value="file:///[#fil21B157A69D41BF1742AD629A14C5609E]" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32" Name="Class" Value="xxxxx.Tools.HMIBrowserDetector.BrowserDetector" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32" Name="Assembly" Value="xxxxx.Tools.HMIBrowserDetector, Version=2.0.2015.1016, Culture=neutral, PublicKeyToken=366fc8dc0356ba75" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32" Name="RuntimeVersion" Value="v4.0.30319" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="CLSID\{3C719C70-EBB6-46A4-B9C5-6A926BDC004C}\InprocServer32" Name="CodeBase" Value="file:///[#fil21B157A69D41BF1742AD629A14C5609E]" Type="string" Action="write" />
</Component>
</DirectoryRef>
</Fragment>
</Wix>
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Component Id="cmp71D7A8BD2249AE8FF1BAF63380EBE202" Guid="3C719C70-EBB6-46A4-B9C5-6A926BDC004C">
<File Id="fil4917A9C7209D8355FE869F3A043C0103" KeyPath="yes" Source="$(var.SourceFilesDir)\Tools.HMIBrowserDetector.tlb">
<TypeLib Id="{1CC3C945-DAFF-4E73-A9D3-849540BBA501}" Description="Tools_HMIBrowserDetector" HelpDirectory="dirB3F37FBA6922AB1B836A1A26AE0C3C1E" Language="0" MajorVersion="2" MinorVersion="0">
<Interface Id="{E455B333-58E2-3D50-9E32-2962A5FC9324}" Name="_BrowserDetector" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
</TypeLib>
</File>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
3.保存文件,放到WXI安装工程中去
4.修改文件清单wxs,将上面两个ComponentId加入进去,这样文件就会拷贝过去了
Wix中注册c#开发的Activex控件的更多相关文章
- Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分享 ...
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
“/”应用程序中的服务器错误. 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“c552ea94-6fbb-11d5-a9c1-00104bb6fc1c”. 说明: 执行当前 Web ...
- 针对Windows 64位系统中Matlab没有LED Control Activex控件的解决方法
Win 10 64bits系统中Matlab 64位软件没有LED Control Activex控件,LED ActiveX Control控件位于Gauges Blockset模块中,而Gauge ...
- Qtp中一个或多个ActiveX控件无法显示问题
今天在使用qtp进行登陆测试的时候,发现了一个问题,现总结归纳如下: [问题] 在测试过程中,一直提醒:一个或多个ActiveX控件无法显示,原因可能是下列其中之一: 如下图所示: [解决办法] 在Q ...
- 【VS开发】ActiveX控件如何定制属性?
在很多场合下会存在这样的需求,那就是使用方在实际使用控件之前就想控件已经做了相应的处理比如加载的控件版本不正确等,或者需要在加载时才确定能够使用的功能集:这个时候传统的配置文件已经无法满足这种类型的需 ...
- Delphi不注册COM直接使用ActiveX控件并绑定事件
文笔不行,直接上源码: 主窗口: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System ...
- Current thread must be set to single thread apartment (STA) mode before OLE,当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。
Add the STAThreadAttribute attribute on the Main method. This attribute is required if your program ...
- 【VS开发】windows注册ActiveX控件
ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件.由于ActiveX控件与开发平台无关,因此,在一种编程 ...
- 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件
用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器的 ...
随机推荐
- 在一台win10上启动多个mysql
1.因为项目需要用一个已经有数据的mysql,而我之前已经安装了一个mysql(之前的mysql上面也是有东西,不想删除) 想办法.... mysqld.exe --defaults-file=D: ...
- elasticsearch分别在windows和linux系统安装
WINDOWS系统安装1.安装JDKElastic Search要求使用较高版本JDK,本文使用D:\DevTools\jdk1.8.0_131,并配置环境变量 2.安装Elastic Search官 ...
- 破解验证码模拟登陆cnblogs
from selenium import webdriver from selenium.webdriver import ActionChains from PIL import Image imp ...
- Jmeter遇到Connection reset by peer的解决方法
解决方案如下: 1.修改HTTP请求下面的Impementation选项,改成HttpClient4 2.修改了/bin/jmeter.bat文件:找到这2行 set HEAP=-Xms256m -X ...
- cube-ui
cube-ui 新官网:https://didi.github.io/cube-ui/#/zh-CN
- weblogic控制台部署web应用
如何使用weblogic管理控制台部署和卸载一个WEB应用呢?下面我们来分步演示! 工具/原料 Oracle WebLogic WEB应用War包 方法/步骤 1 用IE浏览器,打开管理控制台 ...
- pathon 基础学习-集合(set),单双队列,深浅copy,内置函数
一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在pyt ...
- java轻松实现无锁队列
1.什么是无锁(Lock-Free)编程 当谈及 Lock-Free 编程时,我们常将其概念与 Mutex(互斥) 或 Lock(锁) 联系在一起,描述要在编程中尽量少使用这些锁结构,降低线程间互相阻 ...
- hdu 5407(LCM好题+逆元)
CRB and Candies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- oracle数据库连接错误解决办法
ORA-28547 连接服务器失败,可能是Oracle Net 管理错误 原文地址:http://www.linuxidc.com/Linux/2014-11/109686.htm 上周去给客户培训O ...