Привилегии деинсталлятора NSIS согласно установщику
У меня есть установщик NSIS для приложения, которое можно запустить как обычный пользователь. Но если пользователь хочет установить в каталог "Program Files", это можно сделать, запустив установщик с правами администратора.
Теперь у меня проблема, что деинсталлятор запускается с правами пользователя по умолчанию, даже если установка прошла от имени администратора. Это вызывает удаление молча Еще хуже: в нем даже говорится, что процесс удаления прошел успешно без возможности удаления каких-либо файлов.
Мой вопрос: возможно ли создать деинсталлятор во время установки, который требует (или лучше: запрашивает себя) те же привилегии, что и процесс установки?
1 ответ
Вы должны осуществить эту проверку самостоятельно. Вы можете проверить, являетесь ли вы администратором в установщике с помощью плагина UserInfo, а затем сохранить результат в.ini, реестре или добавить информацию в uninstaller.exe:
InstallDir $temp\instdir
Section
UserInfo::GetAccountType
Pop $0
StrCmp $0 "Admin" 0 +2
StrCpy $0 1
IntOp $0 $0 & 1 ; $0 is now 1 if admin or 0 if not
SetOutPath $InstDir
WriteUninstaller "$InstDir\Uninstall.exe"
FileOpen $1 "$InstDir\Uninstall.exe" a
FileSeek $1 0 END
FileWriteByte $1 $0
FileClose $1
SectionEnd
Section Uninstall
FileOpen $1 "$ExePath" r
FileSeek $1 -1 END
FileReadByte $1 $0
FileClose $1
DetailPrint "Installer was admin: $0"
SectionEnd