Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Com 在WiX中使用.reg文件注册DLL 问题的背景_Com_Wix_Registry_Regasm - Fatal编程技术网

Com 在WiX中使用.reg文件注册DLL 问题的背景

Com 在WiX中使用.reg文件注册DLL 问题的背景,com,wix,registry,regasm,Com,Wix,Registry,Regasm,我目前正在尝试整合一种发布新项目的方法,我正在处理这个项目,它要求在用户系统上注册一个COM公开的.NET DLL。由于我是WiX的新手,因此我尝试让事情尽可能简单 问题 my DLL注册的一个大问题是regasm将InProcServer32键的默认值设置为“mscoree.DLL”,但my DLL似乎只能在使用其完整路径时实例化,例如“C:\Windows\SysWow64\mscoree.DLL” 目前,我在安装项目中有一个自定义操作(我想放弃使用WiX),该操作将调用SearchPath

我目前正在尝试整合一种发布新项目的方法,我正在处理这个项目,它要求在用户系统上注册一个COM公开的.NET DLL。由于我是WiX的新手,因此我尝试让事情尽可能简单

问题 my DLL注册的一个大问题是regasm将InProcServer32键的默认值设置为“mscoree.DLL”,但my DLL似乎只能在使用其完整路径时实例化,例如“C:\Windows\SysWow64\mscoree.DLL”

目前,我在安装项目中有一个自定义操作(我想放弃使用WiX),该操作将调用SearchPath API来查找mscoree.dll的完整路径,并用完整路径覆盖默认值,这样dll就可以在没有任何问题的情况下实例化

拟议的解决方案/问题 由于我是WiX新手,我想到了准备一个.reg文件,该文件将包含进入CLSID树的所有必要信息,然后让WiX以某种方式执行该文件

我的问题是:

  • 通过这种方式注册DLL是否存在任何固有缺陷
  • 由于我试图在这里找到解决办法的主要原因是mscoree.dll问题,在WiX中有没有任何本机方法可以做到这一点

  • 看看名为“热”的WiX程序。这可以“获取”DLL,包括与RegAsm/COMVisible部件相关的注册表信息。然后,您可以剪切此代码并将其应用到wxs文件中

    您还可以使用Regasm/regfile,然后手动将该信息转换为RegistryValue元素

    关于路径问题,请使用


    如果将安装标记为32位(x86),则在64位操作系统上运行时,将自动解析为SysWow64文件夹,在32位操作系统上运行时,将自动解析为System32文件夹。

    请查看名为“Heat”的WiX程序。这可以“获取”DLL,包括与RegAsm/COMVisible部件相关的注册表信息。然后,您可以剪切此代码并将其应用到wxs文件中

    您还可以使用Regasm/regfile,然后手动将该信息转换为RegistryValue元素

    关于路径问题,请使用


    如果您将安装标记为32位(x86),则在64位操作系统上运行时会自动解析为SysWow64文件夹,在32位操作系统上运行时会自动解析为System32文件夹。

    Erm是否阻止部署到32位系统?@TonyHopkinson否,我将编写32位和64位的安装程序,以确保使用正确的系统目录,我刚才用了64位路径作为例子。你是在阻止部署到32位系统吗?@TonyHopkinson不,我将编写一个32位和64位的安装程序,以确保使用正确的系统目录,我只是用64位路径作为例子我们再次见面Christopher!我刚刚查看了Heat参考页(),我说的“收获”会找出在用户系统上设置DLL所需的内容,并创建一个文件,将所需内容添加到安装中,对吗?例如依赖关系、注册表项等。?[SystemFolder]属性是否会在Heat程序生成的输出文件中使用?是。获取DLL后,WxS应该关闭,但可能需要进行一些处理,以便将代码段集成到安装中。在您理解为什么需要调整之前,很难解释要调整什么。关键是heat generates wxs这是一个很好的起点,但它不是一个自动工具。尝试了一下,并设法使其像这样工作:)花了好几个小时才弄清楚如何引用heat generated文件,但最终达到了目的!对于其他可能会这样做的人-我在组件周围添加了一个ComponentGroup,然后在WiX项目主文件的Feature元素中使用了ComponentGroupRef。我们再次见面Christopher!我刚刚查看了Heat参考页(),我说的“收获”会找出在用户系统上设置DLL所需的内容,并创建一个文件,将所需内容添加到安装中,对吗?例如依赖关系、注册表项等。?[SystemFolder]属性是否会在Heat程序生成的输出文件中使用?是。获取DLL后,WxS应该关闭,但可能需要进行一些处理,以便将代码段集成到安装中。在您理解为什么需要调整之前,很难解释要调整什么。关键是heat generates wxs这是一个很好的起点,但它不是一个自动工具。尝试了一下,并设法使其像这样工作:)花了好几个小时才弄清楚如何引用heat generated文件,但最终达到了目的!对于其他可能会这样做的人-我在组件周围添加了一个ComponentGroup,然后在WiX项目主文件的Feature元素中使用了ComponentGroupRef。
    [SystemFolder]mscoree.dll