我把它作为的注释放进去
如何在WiX 中检查.NET framework 4.5预请求
但我想我需要把这个问题单独提出来。我的安装并没有发现.NET 4.5已经安装。我安装了.NET 4.5。我参考了说明书。但是,即使安装了4.5,我仍然会收到条件弹出消息。我按照指示在:
http://wixtoolset.org/documentation/manual/v3/customactions/wixnetfxextension.html
http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html
我使用的是最新的wix3.8版本,即使按照我认为的方向,也无法识别.NET 4.5。
1.)使用具有顶级wix标签的wxs更新
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
2.)添加propertyRef标签(我相信它出现在产品部分-可能是个错误)
<WIX>
<PRODUCT>
<PropertyRef Id="NETFRAMEWORK45"/>
3.)在产品部分下添加条件块,我也认为它与PropertyRef处于同一级别
<Condition Message="This application requires .NET Framework 4.5. Please install the .NET Framework then run this installer again.">
<![CDATA[Installed OR NETFRAMEWORK45]]>
</Condition>
4.)我在蝙蝠文件的命令行上使用蜡烛和灯光
echo running the packaging step: wix candle DEV %VERSION%
call "candle" myproject.wxs -ext WiXNetFxExtension -ext WixUtilExtension -I.IncludesDev -dVersion="%VERSION%" -dShortVersion="%SHORTVERSION%" -dBuildTime="%BuildTime%" > dev1.log
echo running the packaging step: wix light DEV
call "light" -sice:ICE50 -sice:ICE61 -sice:ICE64 -ext WiXNetFxExtension -ext WixUtilExtension -o myproject.msi myproject.wixobj > dev2.log
两个日志似乎都没有显示任何问题
dev1.log:
Windows Installer XML工具集编译器3.8.1128.0版版权所有(c) Outercurve基金会。保留所有权利。
myproject.wxs
dev2.log有一些警告,但不相关:
Windows Installer XML工具集链接器版本3.8.1128.0版权所有(c)Outercurve基金会。保留所有权利。
C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(251):错误LGHT0204:ICE38:组件非广告快捷方式安装到用户轮廓它必须使用HKCU下的注册表项作为其KeyPath,而不是文件C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(259):错误LGHT0204:ICE38:组件NonAdvertisedShortcut2安装到用户配置文件。它必须使用HKCU下的注册表项作为其KeyPath,而不是文件。C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(357):warning LGHT1076:ICE40:REINSTALLMODE在属性中定义桌子这可能会造成困难。C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(251):错误LGHT0204:ICE43:组件NonAdvertisedShortcut未发布广告快捷方式。它应该使用HKCU下的注册表项作为其KeyPath,而不是文件。C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(259):错误LGHT0204:ICE43:组件NonAdvertisedShortcut2具有非广告快捷方式。它应该使用HKCU下的注册表项作为它的KeyPath,而不是文件。C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(30):警告LGHT1076:ICE48:目录"DRIVE.C"似乎在属性表到本地驱动器。C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(254):警告LGHT1076:ICE90:快捷方式"ScKey001"的目录是public属性(ALL CAPS),并且位于用户配置文件目录下。这如果ALLUSERS属性的值在UI序列。C: \SVN\myproject_Trunk\client\Build\wix\myproject.wxs(260):警告LGHT1076:ICE90:快捷方式"ScKey002"的目录是public属性(ALL CAPS),并且位于用户配置文件目录下。这如果ALLUSERS属性的值在UI序列。
我使用了-v选项,并删除了ICE选项。
扩展似乎没有打包我的MSI。
运行msiexec获取详细日志似乎也不会显示任何内容。
我觉得我在某个地方犯了一个简单的错误。
Software\Microsoft\NET Framework Setup\NDP\v4\Full中的注册表具有适当的版本和发行版值。
在完成后回答我自己的问题
这个项目最初是从MSIbuild创建的,Wix dark实用程序用于构建wxs。它包括自定义对话框和安装顺序。
通过删除自定义安装顺序和对话框标记,然后添加-ext WixUIExtension,我能够在.NET 4.5电脑和尚未安装.NET 4.5的电脑上成功地看到正确的消息。