2011-01-11 90 views
1

我决定使用ClickOnce技术来部署我的新WPF应用程序。总的来说,ClickOnce可以像广告中那样工作,但我在引导和框架检测方面遇到了小问题。WPF ClickOnce引导程序在一台机器上出现故障

一些背景: - 我使用标准的Visual Studio生成的publish.htm页面作为我的启动页面。 - 唯一的先决条件是.NET Framework 4.0客户端配置文件。 - 所有使用IE 8的客户端。 - 所有客户端已安装.NET 4.0客户端配置文件。

ClickOnce的工作原理与绝大多数机器一样。 VS生成的JScript会正确检测到框架已安装并向用户显示运行按钮。该应用程序启动得很好。

但是,我在其中一台机器上发现了奇怪的结果。在有问题的机器上,VS生成的JScript告诉用户可能没有安装prereq - 或者说,FAILS检测到框架已经安装。 “启动”链接成功启动应用程序,但“运行”链接指向引导程序setup.exe。为什么它没有在这台机器上检测到框架?

在我看来,框架检测主要是检查浏览器提交的useragent字符串。所以,你在下面看到的是两个UserAgent字符串。第一个来自一台正常工作的机器。第二个来自违规机器。

这一个工程: 2011-01-11 15:14:14 W3SVC1 192.168.0.36 GET /publish.htm - 80 - 72.130.187.100 Mozilla/4.0 +(兼容; + MSIE + 8.0; + Windows + NT 6.0; +三叉戟/ 4.0; + SLCC1; + NET + CLR 2.0.50727 + + +媒体中心+ PC + 5.0; + NET + CLR + 3.5.21022; + NET + CLR + 3.5.30729; +。NET + CLR + 3.0.30729; +。NET4.0C)304 0 0

这一个不是: 2011-01-11 18:49:12 W3SVC1 192.168.0.36 GET /publish.htm - 80 + 76.212.204.169 Mozilla/4.0 +(兼容; + MSIE + 8.0; + Windows + NT + 6.1; + WOW64; + Trident/4.0; + GTB6.6; + SLCC2; +。NET + CLR + 2.0.50727; + .NET + CLR + 3.5.30729; +。NET + CLR + 3.0.30729; +媒体+中心+ PC + 6.0; +。NET4.0C)200 0 0

T两台机器的useragent字符串清楚地表明,“嘿NET 4.0客户端配置文件安装在这里” - 但第二台机器似乎无法检测到它。我不太了解useragent字符串,以便理解前者的工作原理和后者失败的原因。据我所知,唯一的区别在于违规的机器运行64位。但是这不应该有所作为。应该是?有任何想法吗?

德克斯特摩根

回答

0

问题已解决!

我仔细看了一下VS.NET生成的publish.htm文件。 JScript代码中有一个错误。违规行是:

checkClient = false;

我将行改为:

checkClient = true;

除非更改了这行代码,否则浏览器将不会检查.NET 4.0 Client Profile是否已安装,因此,已安装4.0 Client Profile的用户将始终显示不必要的先决条件列表。

错误的代码行必须是VS.NET发布逻辑中的一些错误的结果。希望MSFT能够解决。在此之前,每次运行发布向导时都必须手动更正。啊。