1

我把它作为评论放在

如何在 WiX 中检查 .NET framework 4.5 prerequestics

但我认为我需要将此作为一个单独的问题提出。我没有让我的安装赶上 .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

我使用的是最新的 wix 3.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.) 我在 bat 文件的命令行中使用了蜡烛和灯光

echo running the packaging step: wix candle DEV %VERSION%

call "candle" myproject.wxs -ext WiXNetFxExtension -ext WixUtilExtension -I.\Includes\Dev -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 Foundation。版权所有。

我的项目.wxs

dev2.log 有一些警告,但不相关:

Windows Installer XML 工具集链接器版本 3.8.1128.0 版权所有 (c) Outercurve Foundation。版权所有。

C:\SVN\myproject_Trunk\client\Build\wix\myproject.wxs(251):错误 LGHT0204:ICE38:组件 NonAdvertisedShortcut 安装到用户配置文件。它必须使用 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):警告 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”的目录是公共属性(全部大写),位于用户配置文件目录下。如果 ALLUSERS 属性的值在 UI 序列中更改,这会导致问题。C:\SVN\myproject_Trunk\client\Build\wix\myproject.wxs(260):警告 LGHT1076:ICE90:快捷方式“ScKey002” 有一个公共属性目录(全部大写),位于用户配置文件目录下。如果 ALLUSERS 属性的值在 UI 序列中更改,这会导致问题。

我已经使用 -v 选项轻松运行,并且还删除了 ICE 选项。

看来扩展程序没有打包我的 MSI。

运行 msiexec 以获取详细日志似乎也没有显示任何内容。

我觉得我在某个地方犯了一个简单的错误。

Software\Microsoft\NET Framework Setup\NDP\v4\Full 处的注册表确实具有适当的版本和发布值。

4

1 回答 1

1

完成后回答我自己的问题

该项目最初是从 MSIbuild 创建的,Wix dark 实用程序用于构建 wxs。它包括自定义对话框和安装顺序。

通过删除自定义安装顺序和对话框标签,然后添加 -ext WixUIExtension,我能够在 .NET 4.5 PC 和尚未安装 .NET 4.5 的 PC 上成功看到正确消息。

于 2014-04-24T19:22:21.453 回答