使用Microsoft WIX安装命名空间扩展

时间:2010-02-10 17:56:10

标签: wix namespaces wix3 registration

使用wix安装命名空间扩展的最佳/最简单方法是什么? 特别是如何在启用了UAC的Windows 7上安装它。

2 个答案:

答案 0 :(得分:1)

我通过使用WiX内置的自定义操作解决了这个问题,您只需在运行自定义操作之前设置命令行选项。以下是我们如何做的示例:

<CustomAction Id='RegisterExtensions.SetProperty' Property='QtExecCmdLine' 
    Value='"[INSTALLDIR]RegisterExtensionDotNet20_x86.exe" -i "[INSTALLDIR]LogicNP.EZShellExtensions.dll" "[INSTALLDIR]LogicNP.EZNamespaceExtensions.dll" "[INSTALLDIR]MyNse.dll"'/>

<CustomAction Id='RegisterExtensions' BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/>

这也必须为64位完成。我还有64位版本的自定义操作:

<CustomAction Id='RegisterExtensions64.SetProperty' Property='QtExecCmdLine'
      Value='"[INSTALLDIR]RegisterExtensionDotNet20_x64.exe" -i "[INSTALLDIR]LogicNP.EZShellExtensions.dll" "[INSTALLDIR]LogicNP.EZNamespaceExtensions.dll" "[INSTALLDIR]MyNse.dll"'/>

<CustomAction Id='RegisterExtensions64' BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/>

您还必须将注册过程安排到WiX构建文件中:

<Custom Action="RegisterExtensions.SetProperty" Before="RegisterExtensions">(NOT Installed)</Custom>
<Custom Action='RegisterExtensions' After="InstallFinalize">(NOT Installed)</Custom>
<Custom Action='RegisterExtensions64.SetProperty' Before='RegisterExtensions64'>(NOT Installed) AND (VersionNT64)</Custom>
  <Custom Action='RegisterExtensions64' After='RegisterExtensions'>(NOT Installed) AND (VersionNT64)</Custom>

结果是您需要在安装程序中包含EZNamespaceExtension可执行文件。

答案 1 :(得分:0)

您需要添加名称空间扩展特定的注册表项才能使其正常工作。其中许多条目都需要管理员权限。因此,除非用户允许提升,否则无法使用UAC ON进行安装。