通过MageUi.exe修改通过ClickOnce发布过的WPF browser application 配置文件

VS2008提供了ClickOnce功能方便开发人员发布和部署应用程序。但是,对于 WPF browser application,一旦发布后,你想去修改 app.config以改动里面的数据库连接字符串或者服务调用地址协议等,你必须修改app.config文件然后通过publish功能重新发布。 因为ClickOnce对于发布的应用程序的manifestxbap文件都经过hash算法打上标签并签名过以保障应用程序文件的版本一致性和安全性。

但是如果我们给客户发布了应用程序,客户想修改服务地址的话,让客户自己去pulish程序是不可能的。我经过了几天摸索,发现了mageUI.exe这个工具是可以完成重新hash和签名的,只要更新版本客户端就会检索到版本更新并下载新版本。

具体做法如下:

WPF browser application 发布目录的程序结构一般是这样的:

PublishedFolder\MyApp.xbap

PublishedFolder\setup.exe

PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.xbap

PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.exe.manifest

PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.exe.deploy

PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.exe.config.deploy

PublishedFolder\Application Files\MyApp_0_0_0_1\otherDependedLib.dll.deploy

1.    首先修改PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.exe.config.deploy, 这个可以用文本编辑器直接修改或者用WCF SvcConfigEditor.exe来修改;

2.    找到mageui.exe这个工具,一般位于C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin 或者C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin;

3.    修改应用程序发布目录的manifestxbap文件

我们用mageui.exe工具来打开PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.exe.manifest PublishedFolder\MyApp.xbap

  因为WPF Brower Application一般是需要证书的,那我们先设置一下默认证书。 File->Reference, 选中 “Sign on save” “Use default signing certificate” ,然后找到你的证书文件填充“Certificate file”

  3.1 首先修改SLC.MES.exe.manifest文件,将Name->Version增加一个版本号(版本一定要变化,否则客户端不会重新下载);

 3.2 保存该文件,这时候如果你的证书有密码保护,会弹出一个警告对话框,因为刚才的设置里是没有设置缺省密码的地方的。不过没关系,我们在随后弹出的对话框里填入密码即可。

   3.3 然后修改发布根目录下的MyApp.xbap。注意不是PublishedFolder\Application Files\MyApp_0_0_0_1\ MyApp.xbap,虽然这2个文件完全一样,但实际起作用的是根目录下的那个。

  3.4 首先同样将Name->Version增加一个版本号

   3.5 然后点击“Application Reference”里的Select Manifest按钮,重新选择一下刚才的那个manifest文件

  3.6 同样存盘

 

现在客户端IE里重新访问即可下载新版本。

posted @ 2009-12-31 17:06  cubean  阅读(4806)  评论(0编辑  收藏  举报