我使用WiX安装64位应用程序。我已经弄明白了如何制作一个64 bit installer,但是我无法弄清楚如何注册我安装的DLL,所以我没有得到
"Program can't start because XXXX.dll is missing from your computer.
Try reinstalling the program to fix this problem"
错误。
我已尝试使用heat.exe
创建必要的RegistryValue
标记,但它与64位DLL不兼容。我用32位编译了一些DLL(并非所有的都可以在32位中使用),但我仍然无法使heat.exe
工作。看看this WiX help article我似乎应该能够手动撰写RegistryValue
代码,但我对它们应该包含的内容感到困惑。我一直在查看示例here,它比WiX文章中的要复杂得多。
在操作系统中注册DLL需要哪些RegistryValue
标签,以便在PATH上找到它?
编辑:附加背景。
我正在尝试安装SDK和一些示例源代码。我将SDK(DLL,.libs和标题)放在\ Program Files中的文件夹中,我将示例源代码放在桌面上的文件夹中。我有%LIBPATH%上的lib目录,%INCLUDE%上的包含目录和%PATH%上的bin(DLL)目录。
然后我在桌面上有一个文件夹,其中包含一个VS解决方案,用于示例代码。在解决方案中,我在VS项目的Additional Library Directories
字段中的Additional Include Directories
和%INCLUDE%中指定了%LIBPATH%。这很好,解决方案将构建。但是当我尝试运行它时,我的计算机中缺少了#34; DLL#34;错误。我想弄清楚如何找到SDK DLL(无论是否在%PATH%上),以便用户可以简单地构建和运行演示代码而无需复制DLL ,以及他们构建的任何其他应用程序都是如此。
编辑2:我投票结束了这个问题。看起来使用WiX注册DLL与我的实际问题无关。
答案 0 :(得分:1)
你在这里混淆了两件事。 “注册”是COM活动,但“XXXX.dll缺失”表示普通的非COM DLL。
您对%PATH%
的引用也提示非COM DLL,但不需要%PATH%
。而是将DLL与可执行文件一起安装。
理论上,还有应用程序清单,但微软已经完全搞乱了。如果您正在编写任何类型的普通应用程序,我会完全避免它们。