使用wix安装命名空间扩展的最佳/最简单方法是什么? 特别是如何在启用了UAC的Windows 7上安装它。
答案 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进行安装。