通过MageUi.exe修改通过ClickOnce发布过的WPF browser application 配置文件
VS2008提供了ClickOnce功能方便开发人员发布和部署应用程序。但是,对于 WPF browser application,一旦发布后,你想去修改 app.config以改动里面的数据库连接字符串或者服务调用地址协议等,你必须修改app.config文件然后通过publish功能重新发布。 因为ClickOnce对于发布的应用程序的manifest和xbap文件都经过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. 修改应用程序发布目录的manifest和xbap文件
我们用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里重新访问即可下载新版本。