0

我正在使用 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\'
4

1 回答 1

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+ 之间可能会有一些重大变化......

于 2011-05-12T15:59:24.940 回答