#windows-7 #installation #windows-xp #nsis #file-copying
#windows-7 #установка #windows-xp #nsis #копирование файлов
Вопрос:
Я использую файловую копию установщика NSIS для копирования папки вместе со всеми ее вложенными файлами из источника в пункт назначения. Это работает в 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*.*' '$INSTDIRACCBK'
Комментарии:
1. Возможно, для этого требуются права администратора. Вы пробовали запускать его с опцией «Запуск от имени администратора»?
2. как это сделать? кроме того, если я не хочу устанавливать эту проверку пользователей, то как ее удалить?
3. Вы пробовали использовать подключаемый модуль UAC? nsis.sourceforge.net/UAC_plug-in
4. @Cosmin Pirvu : как это сделать? кроме того, если я не хочу устанавливать эту проверку пользователей, то как ее удалить? я имею в виду, любой пользователь может запустить установщик, тогда что делать?? пожалуйста, помогите с кодом, сэр.
5. я не хочу использовать какой-либо плагин, я просто хочу, чтобы filecopy работал как на Windows 7, так и на XP, в настоящее время он работает на XP, но не на 7, даже если я вошел в систему через администратора?
Ответ №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 …
Комментарии:
1. @Anders: сэр, я хочу, чтобы любой мог запустить установщик, любой пользователь или администратор
2. кроме того, код, который я упомянул в сообщении, я выполнил в Windows 7 как администратор, после чего также произошла ошибка при копировании файла.
3. для любого, кто запускает установщик, какой код я должен упомянуть, сэр? пожалуйста, помогите
4. @sqlchild: только администраторы могут выполнять запись в $ windir, $ programfiles и HKLM
5. @Anders: сэр, я не записываю ни в одну из этих папок? тогда это должно сработать, но почему не копируются файлы в Windows 7