Visual Studio Installer文件系统(File system)安装条件(Condition)出错以及解决办法
笔者最近在Visual Studio 2010中使用Visual Studio Installer创建安装项目时碰到了一个非常奇怪的问题。
笔者想做一个installer,需要往一个已经安装过的软件目录下复制文件,但是该安装的软件不同的版本的路径地址不一样,所以需要设置文件安装条件。
笔者参考http://msdn.microsoft.com/zh-cn/library/vstudio/e7e70ac3(v=vs.100).aspx ,
首先在Lauch Condition中添加了注册表搜索条件,将第一个注册表搜索条件命名为SEARCHFOR2013PATH
然后,在File System 添加一个自定义文件夹,将需要安装的文件拖到此文件夹中,假设其中的一个文件时1.txt,需要将1.txt安装到2013PATH下的bin文件夹下
一开始的时候,笔者在DefaultLocation中设为[SEARCHFOR2013PATH]\bin,并直接将1.txt放置于FileSystem的2013Bin下面,后来发现,不管注册表中有没有检索到2013的path,1.txt都会去安装,如果注册表搜索结果为空,那么在安装的时候就会报“Cannot access network location bin”的错误,这个问题困扰了笔者1天,不管试什么样的条件,True 或者 False,都不行。
后来终于找到一个解决办法,参考了http://stackoverflow.com/questions/3135239/how-do-i-specify-visual-studio-installer-conditions
这个是VS的小trick,我觉得也算是一个bug了,需要在安装文件的目录下面建立一个子文件夹,将子文件的安装条件设置成SEARCHFOR2013PATH,同时,在File System下面的文件夹节点的DefaultLocation可以设置为子文件夹的上级目录,这样就可以执行条件安装了。如上图所示。
真想吐槽一下微软。。