以前版本的Visual Stuido中安装项目都可以使用微软自家的Visual Studio Installer,但是到了VS2012这一切都变了,只能用InstallShield Limited Edition。为这个鬼东西折腾了几天,把经验分享出来,留个脚印,以免同样上当。
1.VS2012及更高版本的安装项目
首先,从VS2012开始,以前的Visual Studio Installer不复存在,打开VS2012,新建项目中的“安装和部署”项目模版,多了一个“启用InstallShield Limited Edition”,双击可以得到这个东东的下载页面,直接用邮箱进行注册后,会发下载地址和注册码到邮箱。为了避免麻烦,本文后面有下载地址,并提供了一组注册码。
其次,InstallShield Limited Edition这个东东大家如果做过项目打包,应该都知道,是大名鼎鼎的项目打包工具,非常庞大,功能也强大(听说而已,我也不太会)。VS2012已经不支持Visual Studio Installer了,甚至以前的项目都打不开,只能通过转换到新的安装模版。心里不禁就想到,为啥自己的东西不用,还搞一个别人的,是个限制版,功能更全面就要升级购买,这是为什么?
最后,经过好多努力,到处找资料,看有没有Visual Studio Installer能不能在VS2012中使用,或者InstallShield Limited Edition的使用方法,可惜最后只在百度找到了几篇大概的入门图文教程,用处不大。在微软MSDN的网站,有如下的回复“
Here is everything I know about the InstallShield software included in VS2010. Note that this is NOT Microsoft software, so they don‘t support it, they don‘t update it, they don‘t upgrade it, etc. If you have questions about InstallShield, the best place to start is the InstallShield 2010 Limited Edition Evaluator Guide。。。。”
意思大概就是“InstallShield 软件从VS2010版本就开始包括在VS中,它不是微软的软件,所以VS不提供支持和更新,如果对InstallShield有疑问,可以到官方网站去。。。”
我次奥,这不是明显的坑爹吗,不是你的产品,不提供支持,你还替代自己的东东,拿来用。。
2.VS2012中InstallShield Limited Edition的使用及问题
其实VS2010也可以使用InstallShield Limited Edition,不过VS2010同时还能使用Visual Stuido Installer。以前这个问题估计很多人没注意。导致VS2012开始,只能使用InstallShield Limited Edition的时候,有些人措手不及,包括我自己。
2.1 InstallShield Limited Edition的常规安装没问题
InstallShield Limited Edition的常规安装项目,其实也很简单,简单的设置一下就可以了,我在最后提供一篇网上下载的PDF图文教程,一般安装那上面的顺序,就没问题。常规安装项目,是指简单的复制.NET项目的生成文件到系统目录,搞搞快捷方式,设置一些安装界面和软件信息等。特殊一点的安装当然就是后面所说的有关com组件和ActiveX控件的安装。
2.2 ActiveX控件的安装
问题起源于VS2010的一个ActiveX控件安装项目,到VS2012后,使用InstallShield Limited Edition安装基本的使用过程,都会出现一个“Q109435: Error -6109 Internal build error.”的错误 。经过在InstallShield官网的一番折腾,找到了可能原因之一:由于开发机可能已经注册或安装过次控件,导致在生成时不能注册和注销成功。后来手动打开regedit进行查找,把该控件的注册表条目都删除,果然生成成功了。狂喜了好一阵,没想到,这还只是开始;
生成成功后,我想当然,安装肯定没问题,结果,又来了:错误:-1605 此操作只对当前安装产品有效 。又搞了一阵,无果,最终决定放弃。采用installShield2010的破解版来试试,installShield2010专业版功能当然更强大一点,搞了一晚上,安装包是没错误,但在安装的时候还是com组件注册错误,我崩溃了,最终采用了备用方案,彻底放弃“InstallShield Limited Edition”
2.3 VS2012项目打包不使用InstallShield 的简单方法
为了解决VS2012开发打包ActiveX控件的问题,只能采用这个备用方案了,肯定可以解决问题,只不过不是最好的方法,好在能解决。
方法很简单“VS2012开发,VS2010的Visual Studio Installer打包,1个项目2个解决方案文件即可”
ActiveX控件的注册用Visual Stuido Installer是很容易解决和制作的(已经成功过)。因此VS2012开发后,使用VS2010打包是完全没问题,也没冲突的。但是现在.NET 4.5出来了,用.net 4.5制作的,能不能做,还有点不太确定,我想想问题应该不大,因为ActiveX注册和注册表有关,和.net版本关系貌似不大。
其实使用专业版本的项目打包工具,肯定也能解决,只不过小东西,花那么多时间去重新搞,没必要。
3.软件、教程与注册码下载
VS2012中的InstallShield Limited Edition下载及注册码:http://www.kuaipan.cn/file/id_4279479643944045.htm
InstallShield 2010专业版下载:http://www.kuaipan.cn/file/id_4279479643944046.htm
VS2012中InstallShield Limited Edition入门教程PDF:http://www.kuaipan.cn/file/id_4279479643944044.htm