首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于WiX的Typelib生成与安装

基于WiX的Typelib生成与安装
EN

Stack Overflow用户
提问于 2009-02-20 01:03:50
回答 2查看 11.5K关注 0票数 25

询问Visual如何注册COM库之后,很明显VS为COM注册做了两件事:

  1. 注册COM图书馆
  2. 创建和注册类型库

Visual似乎使用regasm.exe进行此注册。对于第一部分(直接COM注册),使用tallowheat (WiX 2.0或WiX 3.0)似乎可以获得所有基本的COM注册信息。

然而,脂肪/热量似乎没有做的是设置一个类型库安装。使用WiX安装程序和regasm.exe创建自定义操作是可能的,但对于基于Microsoft的安装程序,调用自定义操作并不是最佳实践。

经过进一步的研究,看起来msi能够在安装时生成类型库。事实上,WiX似乎对它有直接的支持!在文件元素中,可以添加台风元素。实际上,一篇关于wix的文章有一个用接口元素填充TypeLib元素的示例。

看来,接口元素至少有两个必需的属性:

  1. Id
  2. 名字

Larry谈到了接口的其他部分,这些部分一般都需要注册为TypeLib。,这个接口条目似乎负责各个部分。拉里说,我们需要将ProxyStubClassId32指定为"{00020424-0000-0000-C000-000000000046}",这样我们就可以很容易地添加它。

从那里到哪里,以及如何填写各种接口元素,这让我感到困惑。我继续将TypeLib元素添加到我的wix文件中,它成功地编译了。不过,我对如何设置接口元素有点一无所知。我们需要做些什么才能正确地填写TypeLib元素,以及我可以使用哪些应用程序或工具来获得它?

下面wcoenen的答案看起来很有希望.我要试一试。

更新:在下面发布我的最后解决方案作为一个答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-06 01:32:22

下面是懒人解决这个问题的方法:使用来自heat 3.0的WiX。

如果您有一个自动生成并通过regasm安装的类型库,heat可以在

代码语言:javascript
复制
heat file c:\my\path\to\my.tlb -out tlb.wxs

它将生成您需要注册的所有类型和接口元素。这不会解决需要提前了解它们的问题,也不会解决当程序集的版本更改时GUID发生更改的问题(即使接口没有更改--这是您应该更改它的唯一时间),但它会使您在中途完成更改。

票数 17
EN

Stack Overflow用户

发布于 2009-02-20 10:42:10

下面的技巧可以帮助获取任何注册表更改并将它们转换为wxs文件,包括您所要寻找的类型列表元素。

  1. 首先,将注册表恢复到未注册类型库的状态: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe /tlb /u mylib.dll
  2. 将注册表的这种干净状态导出到hklm pre.reg: c:\WINDOWS\system32\reg.exe出口HKLM hklm pre.reg
  3. 再次注册类型库: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe /tlb mylib.dll
  4. 将注册表的新状态导出到hklm post.reg: c:\WINDOWS\system32\reg.exe出口HKLM hklm post.reg
  5. 现在我们有两个文本文件,hklm pre.reg和hklm post.reg。创建一个diff.reg文件,它只保存这些文件之间的相关差异。你可以很容易地找到不同的工具。我喜欢使用TortoiseSVN中包含的diff工具,因为我已经每天使用它了。(在这种情况下,由于文本编码问题,WinDiff似乎不能很好地工作。)
  6. 现在,通过使用diff.reg命令调用heat.exe,我们可以将reg转换为reg。(需要wix 3.5或更高版本。) 热reg diff.reg -out typelib.wxs
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/567925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档