日期:2014-05-17  浏览次数:20799 次

c# windows(wpf) 打包部署问题
大家好,现在我在做对一个项目进行打包,基本要求是这样的,首先 用户先选择安装模式,分两种 客户端和服务器端,如果用户选择服务器端进行安装,那么 安装过程中会自动附加数据库,反之不会自动附加数据库,并且用户选择模式的类别要记录到软件中XML文件中。(我的打包部署是利用vs自带的打包部署制作的)
我现在已经解决的问题是:打包后可以自动附加数据库(此时没有做判断,安装时自动附加数据库)
需要解决的是:
1:在用户选择安装模式界面如何知道用户选择的是服务器端还是客户端呢,安装程序类中代码如何实现?
2:假如第一个问题解决,又该如何对在安装过程中是否附加数据库进行判断,代码又该如何实现?



------解决方案--------------------
友情支持下,待高手回答
有一种笨方法
做2个安装程序,一个服务器端,一个客户端,这样简单多了,也不会增加多少操作复杂度,个人想法
------解决方案--------------------
VS的打包功能比较有限,不过有一个思路可以实现,但是过程不是简单几句就可以说清楚的,关键是要明白msi打包的原理,我简单说一下思路

首先第一个界面,安装模式,你选择的是应该是一个ratioButton(两个按钮)的界面,这时你需要设置两个Button的lable和value,还有ButtonProperty,关键是ButtonProperty,必须全大写,这个属性值就是界面跳转的控制变量

然后是第二个界面,数据库参数,这时候是TextBox界面,同样设置lable和value和Property

最后剩下的就是编写CustomAction了,CustomAction中可以获取以上两步设置的Property的值,这样就可以在CustomAction中做安装数据库的处理了

至于页面跳转,涉及到按钮事件的操作,VS中只有顺序事件,这时侯需要使用Orca来修改生成的Msi文件,在msi数据库中找到ControlEvent表,修改按钮的事件,达到页面跳转的目的

要完成以上操作,需要对msi sdk和msi 数据库有相当的了解,我虽然用的wix,但是跟vs自带的一样都是针对msi installer sdk,原理都一样,区别是VS封装太过简单,感觉很多功能不好扩展,由于对VS打包没做过多的研究,也不知道VS下是否能有更好的方法