一台机器上的WPF ClickOnce引导程序检测失败

时间:2011-01-11 23:20:44

标签: wpf clickonce user-agent detection bootstrapping

我决定使用ClickOnce技术来部署我的新WPF应用程序。总的来说,ClickOnce的工作方式与宣传的一样,但我在Bootstrapping和框架检测方面遇到了一些小错误。

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

ClickOnce的工作方式与绝大多数计算机上的广告一样。 VS生成的JScript正确检测到框架已安装并向用户显示“运行”按钮。该应用程序启动就好了。

但是,我在其中一台机器上得到了奇怪的结果。在违规机器上,VS生成的JScript告诉用户可能没有安装先决条件 - 或者更确切地说,它无法检测到框架已经安装。 “启动”链接成功启动应用程序,但“运行”链接指向引导程序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; + Trident / 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

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

德克斯特摩根

1 个答案:

答案 0 :(得分:0)

问题解决了!

我仔细查看了VS.NET生成的publish.htm文件。 JScript代码中存在错误。违规行是:

CheckClient向= FALSE;

我将该行改为:

CheckClient向= TRUE;

除非更改了这行代码,否则浏览器将无需检查是否安装了.NET 4.0 Client Profile,因此,已经安装了4.0 Client Profile的用户将始终看到先决条件清单。

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