Installation NSIS从AppData检索和复制文件

Installation NSIS从AppData检索和复制文件,installation,nsis,appdata,Installation,Nsis,Appdata,我想检查一个文件并将其复制到另一个目录(如果存在)。不幸的是,该文件存在于AppData文件夹中 CheckFile: !define INSTDIR_DATA "$APPDATA\Local\VirtualStore\Program Files\SomeFolder" IfFileExists INSTDIR_DATA\SettingsFile.ini CopyOver NotHere 我毫无问题地进入了这个部分,但是它似乎无法找到该文件,尽管它明确地确保

我想检查一个文件并将其复制到另一个目录(如果存在)。不幸的是,该文件存在于AppData文件夹中

CheckFile:
         !define INSTDIR_DATA "$APPDATA\Local\VirtualStore\Program Files\SomeFolder"
         IfFileExists INSTDIR_DATA\SettingsFile.ini CopyOver NotHere

我毫无问题地进入了这个部分,但是它似乎无法找到该文件,尽管它明确地确保它存在。我错过什么了吗?需要注意的是,我确实希望通过当前用户目录搜索此目录,因此无需将其设置为所有用户。

NSIS有一个$LocalAppData常量:

DetailPrint $AppData
DetailPrint $LocalAppdata
在我的系统上,这会打印:

C:\Users\Anders\AppData\Roaming
C:\Users\Anders\AppData\Local
$AppData实际上不是AppData的“根”,而是其中的漫游部分


如果脚本中有
RequestExecutionLevel
属性,则这将影响Windows处理文件系统重定向的方式,而虚拟存储是其中的一部分。

因此,这会有所帮助,但仍然无法正常工作。将其定义为“$LocalAppdata\VirtualStore\Program Files\Atari\Nerf\System”是否正确?我当前没有显式设置执行级别,是否应该尝试使用管理权限运行此函数?它将如何影响在VirtualStore中查找/复制文件?使用define的语法是${name},因此我希望您的实际代码使用IfFileExists“${INSTDIR_DATA}\…”。执行级别不应真正影响在VirtualStore中查找文件,但如果不设置它并且未提升,则无法将其复制到$ProgramFiles()。如果您仍然无法让它工作,您应该尝试Microsoft/Sysinternals中的Process Monitor,看看您使用的路径有什么问题……哦,我会忽略类似的内容。谢谢@Anders:在搜索NSIS常量列表时,我注意到Norton Security browser插件会阻止所有NSIS.sourceforge.io页面以及NSIS.sourceforge.net,并将它们标记为危险页面。你有什么办法吗?@djvg没有,你应该向他们提交一份报告,然后卸载诺顿。