我在Visual studio中为我的应用程序制作了一个安装项目,我有一个小问题。
我想将一大堆文件复制到某个文件夹(my documents ->测试)。所以我用WinRAR制作了一个静默的自解压.exe文件。当你双击该文件时,它会自动在它所在的同一文件夹中创建文件夹"FILES“,self会将所有内容提取到该文件夹中。
因此,当双击位于"D:\Documents\TEST“中的files.exe文件时,它会将所有文件解压缩到"D:\Documents\TEST\ files”。
在安装项目中,我这样做了:测试将文件夹“用户的个人数据文件夹”添加到文件系统中,在该文件夹中我创建了文件夹“-I”,并在其中添加了files.exe。我在提交部分创建了一个自定义操作,以运行该files.exe文件。
但是当我安装我的应用程序时,它正确地创建了文件夹"D:\Documents\TEST“,它将.exe文件复制到那里,但是由于某种原因,它在C:\Windows\SysWOW64位置创建了" files”文件夹,并将文件解压缩到"C:\Windows\SysWOW64\FILES“。
我怎样才能防止这种情况呢?
非常感谢你的帮助。
发布于 2017-10-03 01:45:54
从基于MSI的安装中运行自定义操作与从交互式用户环境中运行相同的代码是不同的。这意味着任何代码都必须指定任何文件位置的确切路径,而不是依赖于工作目录。因此,看起来程序中的代码只是创建了一个"FILES“目录,该目录是在进程的工作目录中创建的,这是32位windows系统位置。
我不知道代码是不是你写的,也不清楚为什么你的注释会提到环境变量。但是,任何.NET程序员都会使用Environment.SpecialFolder.MyDocuments。如果你想询问Windows Installer的位置,你需要这个列表中的PersonalFolder属性:
您的问题是要安装到"my documents“文件夹,这是安装项目(File System视图)中列表中用户的个人数据文件夹。因此,您应该安装到安装项目中的该文件夹中。如果您更明确地了解代码的作用以及如何将其作为自定义操作调用,那么任何答案都可以更彻底。
https://stackoverflow.com/questions/46529989
复制相似问题