我试图写一个使用防火墙扩展到WiX的WiX脚本,它似乎没有find扩展DLL(我认为)。
我看到的错误是这样的:
File元素包含一个未处理的扩展元素“fire:FirewallException”。
请确保提供了“http://schemas.microsoft.com/wix/FirenetExtension”命名空间中元素的扩展名。
而我的WiX源码的相关部分是这样的:
<?xml version =“1.0”encoding =“windows-1252”?> <Wix xmlns =“http://schemas.microsoft.com/wix/2006/wi” 的xmlns:火= “http://schemas.microsoft.com/wix/FirewallExtension”> <Component Id =“Firewall”Guid =“7278f07d-de6f-497f-9267-d5feb5216a5c”Directory =“NotUsed”> <File KeyPath =“yes”Source =“C:\ Program Files \ Java \ jdk1.6.0_32 \ bin \ java.exe”> <fire:FirewallException Id =“FWX1”Name =“My Program”Port =“80”Protocol =“tcp”/>
如果我尝试注册与regsrv32 WixFirewallExtension.dll文件我得到此错误:
加载了C:\ Program Files(x86)\ Windows Installer XML v3.5 \ bin \ WixFirewallExtension.dll模块,但未find入口点DllRegisterServer。
确保C:\ Program Files(x86)\ Windows Installer XML v3.5 \ bin \ WixFirewallExtension.dll是有效的DLL或OCX文件,然后再试一次
DLL文件在我的path,但这可能无关紧要? 我需要做其他事情来让WiX开始使用它吗?
挖掘一些后找到答案:
我需要在light.exe的命令行中指定扩展名,如下所示:
light myfile.wxs -ext WixFirewallExtension -out myfile.wixobj
您必须在WIX项目中添加“ WixFirewallExtension.dll ”参考来解决此问题。
在WIX项目中添加“WixFirewallExtension.dll”可以解决问题。 要做到这一点,请按照以下步骤:
- 在Visual Studio中打开项目。
- 右键点击wix项目
- 添加对上述dll的引用…