我正在使用Sharp Develop 4.4.1爲我的應用程序創建一個wix安裝程序包。 WIX版本是Sharp Develop的版本,即3.8版本。 我的MSI項目構建得很好。 現在我想將MSI包含在一個包中。在捆綁中,我想檢查是否安裝了.net 4.5和ghostscript(否則安裝它)。 .net軟件包檢查使用packagegroupref輕而易舉。 目前爲止這麼好。Wix util:註冊表搜索無法識別
但是,我也想檢查Ghostscript是否已安裝,並打算通過執行註冊表搜索來完成此操作。因爲我以捆綁的工作,我想使用<util:RegistrySearch.....
,但我得到一個錯誤,說明:The Fragment element contains an unhandled extension element 'util:RegistrySearch'. Please ensure that the extension for elements in the 'http://schemas.microsoft.com/wix/UtilExtension' namespace has been provided. (CNDL0200) - d:\SharpDev Projects\NREOutlookTest1\AIFBundle\Setup.wxs:20
這是我的包代碼:
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle UpgradeCode="ae0120aa-0ba8-45ac-b3e5-fce0f6b05de6"
\t \t Name="!(bind.packageName.AIF)"
Version="!(bind.packageVersion.AIF)"
Manufacturer="!(bind.packageManufacturer.AIF)"
\t \t IconSourceFile=".\images\stamp.ico">
\t <WixVariable Id="WixStdbaLicenseUrl" Value="myurl" />
\t <WixVariable Id="WixStdbaLogoFile" Value="..\NREOutlookTest1\images\stamp.jpg" />
\t <WixVariable Id="WixStdbaLogoSideFile" Value="..\NREOutlookTest1\images\stamp.jpg" />
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkSidebarLicense" />
<Chain>
\t <PackageGroupRef Id="NetFx45Web" />
\t <PackageGroupRef Id="Ghostscript" />
\t \t <MsiPackage Id="AIF" SourceFile="..\AIFSetup\bin\Release\AIFSetup.msi" Visible="no" />
</Chain>
</Bundle>
\t <Fragment>
\t \t <util:RegistrySearch Root="HKLM" Key="SOFTWARE\GPL Ghostscript\9.14" Value="GS_DLL" Variable="GhostScriptDetect" />
\t \t <PackageGroup Id="Ghostscript">
\t \t \t \t <ExePackage
\t \t \t \t \t Id="gs914"
\t \t \t \t \t DisplayName="GPL Ghostscript"
\t \t Cache="no"
\t \t Compressed="no"
\t \t Permanent="no"
\t \t Vital="yes"
\t \t \t \t \t DetectCondition="GhostScriptDetect >> "gsdll32.dll""
\t \t InstallCommand="/S"
\t \t \t \t \t SourceFile="gs914w32.exe" \t \t \t \t
\t \t DownloadUrl="http://downloads.ghostscript.com/public/gs914w32.exe" />
\t \t </PackageGroup>
\t </Fragment>
</Wix>
剛纔我注意到,可執行文件確實被創建並猜測是什麼。有用!在編譯期間,我得到一個錯誤,但仍然產生一個可靠的可執行文件。那個怎麼樣! – nire 2014-09-19 11:52:24
SharpDevelop不再安裝WiX本身。嘗試WiX 3.7如果WixUtilExtension.dll未被項目引用,我只能重現錯誤消息。另外,當我做一個完整的重建時,如果未引用WixUtilExtension.dll,則WiX無法爲我生成任何內容。 – 2014-09-19 12:43:53
你說得對,我自己安裝了wix 3.8工具包。儘管出現了錯誤消息,但我的setup.exe是通過sharpdevelop構建的,但註冊表項不會被setup.exe查詢。我運行procmon來監視註冊表操作,並在日誌中找不到查詢。 我沒有在項目中將擴展添加到WiX擴展中,我甚至嘗試將它們添加爲參考。出現相同的錯誤消息。我做錯了什麼? 如果我開始鍵入util:reg ...我會得到代碼完成建議 – nire 2014-09-19 13:07:25