我在Visual Studio中为我的应用程序设置了一个proyect,我遇到了一个小问题。
我想将一大堆文件复制到某个文件夹(我的文档 - > TEST)。所以我使用WinRAR创建了一个静态自解压.exe文件。双击该文件时,它会自动创建文件夹" FILES"在它所在的同一文件夹中,并自行提取该文件夹中的所有内容。
因此,当您双击位于" D:\ Documents \ TEST"中的files.exe文件时,它会将所有文件提取到" D:\ Documents \ TEST \ FILES&#34 ;
在安装项目中,我这样做了: - 我在文件系统中添加了文件夹"用户的个人数据文件夹"在该文件夹中我创建了文件夹" TEST",然后我在那里添加了files.exe。 我在提交部分创建了一个自定义操作,以运行该files.exe文件。
但是当我安装我的应用程序时,它会创建文件夹" D:\ Documents \ TEST"正确地,它将.exe文件复制到那里,但由于某种原因,它会创建" FILES"文件夹位于C:\ Windows \ SysWOW64并在那里提取文件,在" C:\ Windows \ SysWOW64 \ FILES"。
我该如何防止这种情况?
非常感谢你的帮助。
答案 0 :(得分:0)
从基于MSI的安装中将某些内容作为自定义操作运行与从交互式用户的环境中运行相同的代码不同。运行自定义操作时的工作目录通常来自运行代码的Windows安装程序服务 - 没有任何魔法可以自动使工作目录与可执行文件的起始位置相同。这意味着任何代码都必须指定任何文件位置的确切路径,而不是依赖于工作目录。所以看起来程序中的代码只是创建了一个“FILES”目录,该目录是在进程的工作目录中创建的,该目录是32位的Windows系统位置。
我不知道您是否编写了代码,并且不清楚为什么您的注释引用了环境变量。但是,任何.NET程序员都会使用Environment.SpecialFolder.MyDocuments。如果您想向Windows Installer询问此列表中您要求提供PersonalFolder属性的位置:
并且您的问题表明您正在安装到“我的文档”文件夹,该文件夹是安装项目(文件系统视图)列表中的用户个人数据文件夹。所以你应该在安装项目中安装到该文件夹。如果您更清楚地了解代码的作用以及您如何将其称为自定义操作,那么任何答案都可以更彻底。