Привилегии деинсталлятора 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
Другие вопросы по тегам