2014-09-19 62 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 !!