【问题标题】:FileCopy of NSIS installer not working in Windows 7 but working in Windows XPNSIS 安装程序的 FileCopy 无法在 Windows 7 中运行,但在 Windows XP 中运行
【发布时间】:2011-08-23 00:11:31
【问题描述】:

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

【问题讨论】:

  • 可能需要管理员权限。您是否尝试使用以管理员身份运行选项启动它?
  • 怎么办?另外,如果我不想对 Users 进行此验证,那么如何删除它?
  • 您是否尝试过使用UAC插件? nsis.sourceforge.net/UAC_plug-in
  • @Cosmin Pirvu:怎么做?另外,如果我不想对 Users 进行此验证,那么如何删除它?我的意思是,任何用户都可以运行安装程序,那么该怎么办?先生,请帮忙写代码。
  • 我不想使用任何插件,我只希望文件复制在 Windows 7 和 XP 上都可以工作,目前它可以在 XP 上工作,但不能在 7 上工作,即使通过管理员登录也是如此?

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


【解决方案1】:

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

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

【讨论】:

  • @Anders : 先生,我希望任何人都可以运行安装程序,任何用户或管理员
  • 另外,我在帖子中提到的代码,我已经以管理员身份在 Windows 7 上执行过,然后,FileCopy 操作也失败了。
  • 任何人都可以运行安装程序,先生,我应该提到什么代码?请帮忙
  • @sqlchild:只有管理员可以写入 $windir、$programfiles 和 HKLM
  • @Anders :先生,我没有写信到这些文件夹中的任何一个吗?那么它应该可以工作,但是为什么不能在 Windows 7 上复制文件
猜你喜欢
  • 2011-03-21
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 2013-09-09
  • 2011-07-11
相关资源
最近更新 更多