在WiX中使用防火墙扩展

我试图写一个使用防火墙扩展到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的引用…