0

NSISインストーラーのFileCopyを使用して、フォルダーとそのすべてのサブファイルをソースから宛先にコピーしています。これはXPでは機能しますが、Windows 7では機能しません。Windows7でインストーラーを実行すると、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 に答える