- 问题的产生
做过ASP.NET网站开发的同行应该知道,在网站应用程序发布的时候,我们可以通过编辑Web.config文件,把开发环境转换为测试坏境或者生产环境,一般是通过编辑connectionStrings配置节和appSettings配置节,诸如数据库连接字符串等常量。但是,WPF浏览器应用程序则大不一样,没有ASP.NET应用程序那么简单。对于一个WPF浏览器应用程序来讲,一般来讲,如果你改变了app.config文件,则应该重新发布一次,然后再部署到web服务器上。然而,当WPF浏览器应用程序作为一个产品的一部分时,针对具体的用户重新发布一次,这种解决方案有所不妥,或者是行不通的,因为前方的实施工程师不愿意这样做,同事也破坏了一个产品的完整性。
通过两天的搜索和摸索,我找出了一个比较满意的解决方案,以供同行参考!
- 问题的解决方案
1 . WPF浏览器应用程序通过ClickOnce产生的发布包的结构
标号 | 文件 |
1 | PublishFolder\xxx.xbap |
2 | PublishFolder\Application Files\xxx_1_0_0_1\xxx.exe.config.deploy |
3 | PublishFolder\Application Files\xxx_1_0_0_1\xxx.exe.deploy |
4 | PublishFolder\Application Files\xxx_1_0_0_1\xxx.exe.manifest |
5 | PublishFolder\Application Files\xxx_1_0_0_1\xxx.xbap |
我们要修改三个文件:
1) PublishFolder\Application Files\xxx_1_0_0_1\xxx.exe.config.deploy
2) PublishFolder\Application Files\xx_1_0_0_1\xxx.exe.manifest
3) PublishFolder\xxx.xbap
2 . MageUi.exe工具
使用此工具,可以对部署清单和应用程序清单执行创建、编辑和签名操作。一般位于C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin或者C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin,如果两个目录下都没有,我们可以下载一个。
我们使用此工具的主要目的是,根据客户单位的不同情况,定制相关数据库服务器的信息和应用程序服务器的信息,比如数据库连接字符串等。
3 . 具体步骤
1)用记事本打开PublishFolder\Application Files\xxx_1_0_0_1\xxx.exe.config.deploy,编辑它以满足你的需要。
2)配置默认选项。运行MageUi.exe,它的界面如下图:
以此选择File-Preferences,弹出窗口如下:
勾选“Sign on save”复选框和“Use default signing certificate”复选框,并且导入WPF应用程序的证书文件。
3)编辑PublishFolder\Application Files\xxx_1_0_0_1\xxx.exe.manifest
File-Open打开清单文件xxx.exe.manifest,界面如下:
选择“Files”,点击按钮“Populate”,如有弹窗口,点击“确定”关闭。File-Save保存,如有弹出窗口点击“确定”关闭。
4)编辑PublishFolder\xxx.xbap.
打开此文件,界面如下图:
选择“Application Reference”,点击“Select Manifest...”选择刚才编辑的清单文件,保存文件。
4 . 测试。
把刚才编辑好的发布包放在IIS或者其他Web服务器上,在IE浏览器中输入此浏览器应用程序的URL,如果正常则成功!