我正在尝试使用VS2010创建一个安装程序,该安装程序在安装程序完成安装后调用一个复制某些文件的实用程序。
我所做的是创建一个实用程序,它接受目标(安装程序安装包的位置)的命令行参数和源(安装程序文件的位置)。
接下来,在安装程序项目中,我在安装程序之后添加了一个CustomAction,以使用参数[TARGETDIR] [SourceDir]调用我的实用程序(作为安装的一部分安装)。
我遇到的问题是,如果安装程序位于网络驱动器上,[SourceDir]不会填写任何内容!如果它位于我的任何硬盘,CD或闪存驱动器上的文件夹中,则填写正确的路径。如果它位于网络驱动器上(未映射到驱动器号),则[SourceDir]即为传递到实用程序是空白的!
有关如何获取网络位置的任何想法都作为[SourceDir]传递?
答案 0 :(得分:0)
您可以尝试使用OriginalDatabase属性来查看是否可以更好地解析。
但是,除非您使用安装后的程序进行复制,否则您不太可能成功。
在Everyone安装(适用于所有用户)中,Visual Studio自定义操作与系统帐户一起运行。您说您没有映射到驱动器号(并且驱动器号不会起作用,因为它们属于交互式用户,而不是系统帐户)但是系统帐户没有网络权限,因此尝试解决网络位置失败,您的代码无论如何都无法复制。这就是为什么使用交互式用户的帐户运行单独的程序可以工作,在用户第一次运行该应用程序时进行复制。或者应用程序设计使应用程序知道额外文件的网络位置并可以直接访问它。在您的情况下,我不知道任何其他解决方案。