2014-09-19 80 views
0

我正在使用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 &gt;&gt; &quot;gsdll32.dll&quot;" 
 
\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>
我已經包括了維克斯擴展WixUtilExtension.dll項目: Screenshot

+0

剛纔我注意到,可執行文件確實被創建並猜測是什麼。有用!在編譯期間,我得到一個錯誤,但仍然產生一個可靠的可執行文件。那個怎麼樣! – nire 2014-09-19 11:52:24

+0

SharpDevelop不再安裝WiX本身。嘗試WiX 3.7如果WixUtilExtension.dll未被項目引用,我只能重現錯誤消息。另外,當我做一個完整的重建時,如果未引用WixUtilExtension.dll,則WiX無法爲我生成任何內容。 – 2014-09-19 12:43:53

+0

你說得對,我自己安裝了wix 3.8工具包。儘管出現了錯誤消息,但我的setup.exe是通過sharpdevelop構建的,但註冊表項不會被setup.exe查詢。我運行procmon來監視註冊表操作,並在日誌中找不到查詢。 我沒有在項目中將擴展添加到WiX擴展中,我甚至嘗試將它們添加爲參考。出現相同的錯誤消息。我做錯了什麼? 如果我開始鍵入util:reg ...我會得到代碼完成建議 – nire 2014-09-19 13:07:25

回答

0

好的。我正式是一個白癡。我有一個在sharpdevelop中運行的後期編譯腳本,它正在進行蠟燭和燈光操作。我忘了在蠟燭命令中包含擴展名,這給了我錯誤。 DOH !!