2010-02-10 56 views

回答

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您的安裝程序中的可執行文件。

+0

感謝您的幫助。我只是希望它會更簡單;-) – Wienczny 2010-10-21 23:36:35

+1

我們都希望在Windows上安裝時,但每次都會碰到臉上:-) – tronda 2010-10-22 08:17:42

0

您需要添加命名空間擴展特定的註冊表項才能正常工作。其中許多條目需要管理員權限。因此,除非用戶允許提升,否則不能使用UAC ON進行安裝。

+0

我已配置wix以要求提升權限。我試圖創建安裝程序的命名空間擴展使用您的EZNamespaceExtension。是否可以使用自動註冊?或者我將不得不查找所有必要的註冊表項? – Wienczny 2010-02-23 12:46:26