我正在使用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