1. 问题
假设我们需要建立一个Web安装项目,要求安装项目提供Web配置界面、数据库配置页面以及一个FTP配置界面。Web配置界面在vs.net安装项目会给出缺省的一个。数据库配置页面需要用户输入数据服务器IP地址、数据库服务器的用户名和密码以及数据库的名称。这个页面可以在安装项目的用户界面编辑器中在启动节点下添加一个文本框(A)对话框,四个文本输入框刚好可以填入数据库配置信息,遗憾的是,数据库服务器的密码不能Mask成“*”号,需要解决。FTP配置页面或许用户界面编辑器中没用一个对话框是适合的,需要我们自己定制。
2. 解决
上面的两个问题有两种解决方案:一是抛弃vs.net的用户界面,添加自定义操作,在自定义操作中给出自己的配置界面。二是想办法让vs.net的用户界面编辑器提供丰富的对话框。第一种解决方案想必很多人以及在使用了,本文讨论第二种。
通过研究发现,户界面编辑器对话框模板在vs.net安装路径下的“Common7\Tools\Deployment\VsdDialogs”文件夹中,模板按多国语言分类,vs.net中文版用到的模板在“2052”子文件夹中。文本框(A)对话框对应的文件正是VsdCustomText1Dlg.wid。实际上,vs.net安装项目制作出来的是windows installer安装包,wid文件是作为windows installer安装项目的一个merge modules。wid文件可以通过windows installer SDK提供的文件名为orca.exe的工具编辑。用orca打开vsdCustomText1Dlg.wid,将表Control的列名为Edit3的那一行的Attributes的值改成2097159保存,就可以让这个编辑框具有隐藏输入的文本为“*”号的特性。当然,更好的做法是让改文本编辑框在户界面编辑器中具有是否隐藏密码的属性而不是直接硬修改Attributes的值。同样我们更是可以为wid添加我们需要的控件定制更加丰富的界面。具体的做法,需要参考windows installer SDK的文档。windows installer SDK在http://www.microsoft.com/msdownload/platformsdk/sdkupdate/可以获得。
3. 尚未解决的问题
为了保持兼容性,我们需要制作新的wid文件,注册到vs.net中,而不是修改固有的那几个wid文件。这个问题,还没用研究,如果有谁研究出来的,请贴出来给大家共享一下。
4. 小结
接触了windows installer有感于微软的强大,如果vs.net的安装项目支持windows installer的所有特性install shield的自己应该不会好过。讨论归讨论,但是,我发现在vs.net 2003中,用orca定制用户界面还是很烦琐的,建议在实际做项目的时候慎用,否则会给修改和维护带来麻烦,非常简单的修改,可以小试一下。
附:安装项目小技巧(供本人备忘用
)[TARGETDIR] 安装路径
[TARGETVDIR] 安装的Web虚拟路径
[TARGETPORT] 安装的Web端口号