Visual Studio 打包安装七宗罪
开发.NET的人,肯定会使用Visual Studio里面自带的MSI打包安装工具框架。如果是在一般情况下,这个打包安装框架已经完全足够满足产品发布安装的需要了。它的制成品,是一个setup.exe,一个MSI安装文件,如果你选择项目以来的其他.NET,Windows Install 框架,并且确定随产品发布,那制成品中还会包含这些东西的安装文件。
但是VS打包发布出来的安装包,安装体验实在是非常差,举个例子,如果你的项目是依赖于.NET 4.0以及VC++ 2010,并且你的目标客户机中没有安装过任何该类产品,那当你执行setup.exe的时候,先是会弹出.NET 4.0客户安装协议,用户点击“同意”后,再弹出VC++ 2010客户安装协议,用户再次点击“同意”,才能开始真正安装。并且在安装过程中,每安装一个东西,如果是在Vista之上的系统上,就会弹出一次需要确认安装并且提升权限的对话框,实在是不胜其烦。
并且这个打包的选项也非常奇怪,如果会使用Installer发布工具的,就会记得里面永远只能在“网上下载所需依赖项”和“本地包含所需依赖项”中二选其一。那如果我想定制发布安装包,如果发现依赖项不存在,再自动去网上下载呢?不好意思,做不到。而且如果我打包出来的MSI是中文的,那发布的时候必定会带上.NET的中文语言包。如果不是修改系统的bootstrapper配置,这个语言包就是必须跟着的,真是完全无厘头,我产品是多语言安装的,难道.NET也要多语言包吗?
必须掌握的一些基础概念
Wix的全称是(Windows Installer XML)