一、使用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控件的更多相关文章

  1. Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分享 ...

  2. 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

    “/”应用程序中的服务器错误. 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“c552ea94-6fbb-11d5-a9c1-00104bb6fc1c”. 说明: 执行当前 Web ...

  3. 针对Windows 64位系统中Matlab没有LED Control Activex控件的解决方法

    Win 10 64bits系统中Matlab 64位软件没有LED Control Activex控件,LED ActiveX Control控件位于Gauges Blockset模块中,而Gauge ...

  4. Qtp中一个或多个ActiveX控件无法显示问题

    今天在使用qtp进行登陆测试的时候,发现了一个问题,现总结归纳如下: [问题] 在测试过程中,一直提醒:一个或多个ActiveX控件无法显示,原因可能是下列其中之一: 如下图所示: [解决办法] 在Q ...

  5. 【VS开发】ActiveX控件如何定制属性?

    在很多场合下会存在这样的需求,那就是使用方在实际使用控件之前就想控件已经做了相应的处理比如加载的控件版本不正确等,或者需要在加载时才确定能够使用的功能集:这个时候传统的配置文件已经无法满足这种类型的需 ...

  6. Delphi不注册COM直接使用ActiveX控件并绑定事件

    文笔不行,直接上源码: 主窗口: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System ...

  7. 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 ...

  8. 【VS开发】windows注册ActiveX控件

    ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件.由于ActiveX控件与开发平台无关,因此,在一种编程 ...

  9. 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件

    用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器的 ...

随机推荐

  1. Python3安装配置【转】

    不建议卸载python2 可能会导致系统内其他软件无法使用,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装python3和python2共存 (前 ...

  2. mysql 字符编码设置

    安装mysql时如果字符编码为默认值latin1,则需要修改为utf8以便支持中文数据. 命令如下: 1.显示数据库字符集 mysql> show create database test;+- ...

  3. tomcat报错catalina.sh: line 401: /usr/java/jdk1.7.52/bin/java: No such file or directory

    将生产服务器的Tomcat目录打包过来后解压后,启动Tomcat后,发现如下问题: # ./shutdown.sh  Using CATALINA_BASE:   /usr/local/tomcat  ...

  4. jquery-css处理

    jquery css处理,包括CSS,位置,尺寸等 一:CSS 使用 说明 例子 css(name|pro|[,val|fn]) 访问匹配元素的样式属性 $("p").css(&q ...

  5. python包管理之Pip安装及使用

    Python有两个著名的包管理工具easy_install.py和pip.在Python2.7的安装包中,easy_install.py是默认安装的,而pip需要我们手动安装. pip可以运行在Uni ...

  6. 使用VSCode创建.NET Core 项目,添加类库间引用

    注:网络上搜索到的关于VsCode创建调试.Net Core 项目的文章都比较老旧,不能完全参考使用,根据网络文章.微软官方文档的指导下,学习并整理此文档,但也大体和文档学习路线相似,主要为记录学习过 ...

  7. Java 日期时间获取和显示

    Java正确获取星期Calendar.DAY_OF_WEEKhttp://chamcon.iteye.com/blog/2144433 Java SimpleDateFormat 中英文时间格式化转换 ...

  8. 【PAT】1019 数字黑洞 (20)(20 分)

    1019 数字黑洞 (20)(20 分) 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做, ...

  9. Vue.JS 2.x

    基于ThinkPHP 5.0与Vue.JS 2.x的前后端开源开发框架VueThink VueThink 项目介绍 VueThink是一套基于Vue全家桶(Vue2.x + Vue-router2.x ...

  10. Spark官方文档中推荐的硬件配置

    1.关于存储: 1).可能的话,Spark节点与HDFS节点是一一对应的 2).如果做不到,那至少保证Spark节点与HDFS节点是一个局域网内 2.关于硬盘: 1).官方推荐每台机子4-8个硬盘,然 ...