为了分布式和多客户端调用我们还需要将写好的COM组件发布到一台服务器上。这里我们将组件部署到操作系统的COM+应用程序中去。如果没此需要就可以导出后,在C++环境中调用COM了。

第一步:导出COM组件。我们可以使用regasm.exe(导出并在本机注册)或tlbexp.exe(只导出不注册,在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727中,也可以拷贝到你要的目录中,以前1.1时不行的,还需要调用vsvars32.bat才可以使用)我们也写各bat文件。

gacutil -i SayHello.dll(将强命名的程序集添加到全局缓存中去,不然在运行的时候会报找不到文件的错误)

regasm SayHello.dll /tlb(生成我们需要的tlb文件)

第二步:在得到tlb文件后我们 控制面板->管理工具->组件服务->计算机->我的电脑->COM+应用程序 中进行部署。首先添加一个新的空的COM+应用程序。

再向刚刚建好的COM+应用程序中添加组件。新建组件->安装新组件,选择第一步生成的tlb文件点完成。我们就可以在组件中看到ComDemo.CSayHello和该组件实现的接口ISayHello。

以上工作我们也可以通过脚本来完成,这里我们使用VB Script来做,同样他也时调用COM组件(COMAdminCatalog)实现的。

  1. '创建COMAdmin.COMAdminCatalog对象
  2. set cat = CreateObject("COMAdmin.COMAdminCatalog")
  3. '连接本地主机
  4. cat.Connect("127.0.0.1")
  5. '取得COM+应用程序配置
  6. set apps = cat.GetCollection("Applications")
  7. '读取现有COM+应用程序配置
  8. apps.Populate()
  9. '创建一各新的COM+应用程序配置
  10. set app = apps.Add()
  11. '用一各GUID来表示我们的com+应用程序
  12. app.Value("ID") = "{da2d72e3-f402-4f98-a415-66d21dafc0a9}"
  13. 'com+应用程序的名字
  14. app.Value("Name") = "SayHello"
  15. 'com+应用程序的描述
  16. app.Value("Description") = ".net and com+ demo"
  17. 'com+应用程序的模拟级别(1为匿名)
  18. app.Value("ImpersonationLevel") = 1
  19. 'com+应用程序的调用的身份验证级别(1为无)
  20. app.Value("Authentication") = 1
  21. '保存配置
  22. apps.SaveChanges()
  23. '将该应用程序设置为运行在NT Server上
  24. cat.CreateServiceForApplication "SayHello", "SayHello", "SERVICE_DEMAND_START", "SERVICE_ERROR_NORMAL", "", "", "", False
  25. '导入已经注册的控件(本来想用InstallComponent,但是总是报错,晕~)
  26. cat.ImportComponent "SayHello", "{C6D664F5-6CF6-4c12-9948-8A40B16818BE}"

保存VBScript文件将其添加到bat文件中去:

gacutil -i SayHello.dll

regasm SayHello.dll /tlb

installSayHello.vbs

这样就将我们的程序部署到COM+应用程序中去了,后面就是调用了。

COM与.NET程序集导出和部署COM组件的更多相关文章

  1. vs安装部署“必备”组件里面正常情况没有出现office2010 PIA组件

    vs安装部署“必备”组件里面正常情况没有出现office2010 pia组件时,将 Office2010PIARedist 文件夹放在C:\Program Files\Microsoft SDKs\W ...

  2. (架构)React Native 导出项目全局共用组件的模块

    自定义组件全局使用(类似如下) import { ReactNavComponent, Widget, Util } from 'rn-yunxi'; const { RegexpUtil, Stor ...

  3. suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件

    文章目录 1.6.部署kube-apiserver 1.6.0.创建kubernetes证书和私钥 1.6.1.生成kubernetes证书和私钥 1.6.2.创建metrics-server证书和私 ...

  4. suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件

    文章目录 1.7.部署kube-controller-manager 1.7.0.创建kube-controller-manager请求证书 1.7.1.生成kube-controller-manag ...

  5. suse 12 二进制部署 Kubernetets 1.19.7 - 第08章 - 部署kube-scheduler组件

    文章目录 1.8.部署kube-scheduler 1.8.0.创建kube-scheduler请求证书 1.8.1.生成kube-scheduler证书和私钥 1.8.2.创建kube-schedu ...

  6. suse 12 二进制部署 Kubernetets 1.19.7 - 第09章 - 部署kubelet组件

    文章目录 1.9.部署kubelet 1.9.0.创建kubelet bootstrap kubeconfig文件 1.9.1.创建kubelet配置文件 1.9.2.配置kubelet为system ...

  7. suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件

    文章目录 1.10.部署kube-proxy 1.10.0.创建kube-proxy证书 1.10.1.生成kube-proxy证书和秘钥 1.10.2.创建kube-proxy的kubeconfig ...

  8. suse 12 二进制部署 Kubernetets 1.19.7 - 第11章 - 部署coredns组件

    文章目录 1.11.0.部署coredns 1.11.1.测试coredns功能 suse 12 二进制部署 Kubernetes 集群系列合集: suse 12 二进制部署 Kubernetets ...

  9. 使用VitePress搭建及部署vue组件库文档

    每个组件库都有它们自己的文档.所以当我们开发完成我们自己的组件库必须也需要一个组件库文档.如果你还不了解如何搭建自己的组件库可以看这里->从零搭建Vue3组件库.看完这篇文章你就会发现原来搭建和 ...

随机推荐

  1. React native android 最常见的10个问题

    这里逐条记录下最容易遇到的React native android 相关case: 1. app启动后,红色界面,unable load jsbundle : 解决办法:一般来说就是,你是用dev-s ...

  2. 【jquery、XML】jquery通过按钮使打开select

    <select> <option>aaaaa</option> <option>bbbbb</option> <option>c ...

  3. 手工杀毒辅助软件(PC Hunter) V1.51 免费绿色版

    软件名称: 手工杀毒辅助软件(PC Hunter) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 4.7MB 图片预览: 软件简介: PC Hunter是 ...

  4. Python基础(十一)-面向对象

    三种编程范式: 1.函数式编程:函数指数学意义上的函数 由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的.没有可变的状态,函数就是引用透明(Ref ...

  5. Anaconda 安装概要

    Anaconda 作为开源项目,集成了Python的大部分第三方包,如:pandas,Numpy,scipy等. 1. 下载地址:https://www.continuum.io/downloads ...

  6. Linux 图形系统界面 和 文本系统和界面切换

    本着,有好轮子就不要乱造的原则 下面是原文连接,来自三石兄的博客 http://www.cnblogs.com/deepstone/p/3344430.html 1.默认开机进入文本模式 如果想让开机 ...

  7. ip地址分类和网段区分

    IP地址分类/IP地址10开头和172开头和192开头的区别/判断是否同一网段 简单来说在公司或企业内部看到的就基本都是内网IP,ABC三类IP地址里的常见IP段. 每个IP地址都包含两部分,即网络号 ...

  8. Oracle Day09 存储与触发器

    1.存储 存储过程.存储函数:指存储在数据库中供所有用户程序调用的子程序. --创建存储过程(procedure) --用create procedure 命令建立存储过程. 格式: create o ...

  9. Android:Asmack能登录但是获取不到联系人的问题

    先说一下:换了N个jar包,换了N个OpenFire,就是获取不到联系人.但是能登录.特别纳闷,百度不到,google一下,有人隐约说了下权限的问题. 终于搞出来了,总结一下,浪费了一整天的时间.(码 ...

  10. jQuery(6)——jQuery对表单、表格的操作及更多应用

    jQuery对表单.表格的操作及更多应用 [表单应用] 一个表单有表单标签.表单域及表单按钮三个基本部分. 单行文本框应用:获取和失去焦点改变样式. 也可以用CSS中的伪类选择符来实现,但是IE6并不 ...