最近试验设计器的独立模式应用程序,VS2008独立模式的应用程序除了需要Framework3.5之外,还需要独立模式的运行环境。这样在制作安装包的时候,就希望最好能够将独立模式运行环境也一起发布。本来以为很简单的事情,谁知道搞了好长时间。
制作安装包的过程就不详细说了,重点说说独立模式运行环境。首先需要检查是否安装了独立模式的运行环境,通过在“启动条件”中添加一个注册表搜索就可以解决。然后增加“启动条件”,在“启动条件”的属性中,有一项InstallUrl,如下图:
对于该属性,MSDN的解释是有3种写法:URL方式表示启动条件所需要文件的网址;UNC方式表示所需文件的网络共享路径;文件路径方式表示所需文件相对于安装程序所以文件夹的路径。于是在生成的安装包位置创建shell文件夹,并将所需要文件vs_shell_isolated.chks.exe复制到shell文件夹,然后执行安装程序,可以却显示如下图所示错误:
如果去掉InstallUrl中的内容重新编译就可以进行安装,查了N久都没找到问题的解决办法。直到现在还是没有搞清楚InstallUrl这个属性到底是干什么用的,我想可能如果发现不满足启动条件,就和Message属性一起,提示用户在什么地方自行安装。
后来就想,既然Framework可以作为系统必备进行自动检测并安装,能否将这个环境也做成系统必备呢?能否添加系统必备项呢?
于是Google了一下“vs2008 自定义 系统必备”,第一个就是MSDN中的相关信息“添加自定义系统必备”,了解到系统必备主要是定义product.xml和package.xml并准备相关文件(这里提供一个工具来生成系统必备)。于是定义了一个VS2008独立模式的系统必备项,然后制作安装包,顺利安装。下图是添加后的系统必备对话框(图中蓝色部分):
由于这里采用的是带SP1的独立模式运行环境,那么相应的Framework也应该是.Net Framework 3.5 Sp1,于是再选择3.5Sp1的系统必备重新编译,可是编译时却出现如下错误:
后来按照这篇BLOG修正了该问题,至此,顺利解决独立模式应用程序的安装部署。
顺便说一下,除了通过安装项目和其他安装工具制作安装包之外,微软还提供Windows Installer XML制作安装包。
注意事项:
1、在系统必备中需要选择“从与我的应用程序相同的位置下载系统必备组件”这一项,否则可能会从网络下载必备文件。
2、要使安装程序能够自动安装系统必备,必须使用setup.exe启动安装,而不能直接通过*.msi进行安装,至于原因,请参考这里。
3、虽然安装程序能够自动安装系统必备,但是仍然不要放弃安装项目中的“启动条件”,因为用户可能会直接通过*.msi来进行安装。