NSIS安装程序的FileCopy无法在Windows 7中运行,但在Windows XP中运行

时间:2011-05-11 05:17:40

标签: windows-7 installer windows-xp nsis file-copying

我正在使用NSIS安装程序的FileCopy将文件夹及其所有子文件从源复制到目标。这适用于XP但不适用于Windows 7.当我在Windows 7上运行安装程序时,FileCopy对话框甚至不会出现,它只是被跳过。 但在Windows XP中,它正确显示“复制文件”对话框并成功。 有什么问题?请帮忙。

!define FileCopy `!insertmacro FileCopy`
!macro FileCopy FilePath TargetDir
  CreateDirectory `${TargetDir}`
  CopyFiles `${FilePath}` `${TargetDir}`
!macroend

   ${FileCopy} 'C:\ACCBK\*.*' '$INSTDIR\ACCBK\'

1 个答案:

答案 0 :(得分:2)

要确保安装程序以管理员身份运行,请使用以下代码:

RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)

!include LogicLib.nsh

Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
    MessageBox mb_iconstop "Administrator rights required!"
    SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
    Quit
${EndIf}
FunctionEnd

如果这是问题所在,这意味着它实际上也在XP上被破坏了(真的是任何版本的NT),你只是忘了测试非管理员。

CopyFiles只调用SHFileOperation,但XP和Vista +之间可能会有一些重大变化......当然......