2011-06-22 4 views
1

J'utilise NSIS (HM NISedit 2.0.3 pour l'éditeur) pour construire les configurations de mon application. Pour Windows avec UAC (7 et Vista), il ne s'installe parfois que lorsque je clique sur mysetup.exe et que je cours en tant qu'administrateur (même chose pour la désinstallation). Cela n'arrive pas quand j'éteins l'UAC. S'il vous plaît me suggérer comment désactiver le UAC dans mon script avant que l'installation se déroule OU toute autre façon de surmonter ce problème UAC ?. Veuillez suggérer une solution pour le problème ci-dessus je suis actuellement confronté.Installation/Désinstallation avec UAC activé pour Windows 7 et Vista

Répondre

1

Si vous avez besoin des droits d'administrateur, vous devez utiliser requestexecutionlevel pour marquer le programme d'installation (Si vous installez dans programfiles $ ou écrire à HKEY_LOCAL_MACHINE):

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 

Si vous installez pour l'utilisateur actuel (AppData $/$ localappdata et HKEY_CURRENT_USER) vous pouvez simplement utiliser RequestExecutionLevel user

+0

Est-ce que cela déclenche la fenêtre contextuelle UAC et demande le mot de passe administrateur, et si elle est entrée, continue avec l'installation. Ou est-ce simplement quitter si le programme d'installation n'a pas été exécuté avec des privilèges d'administrateur? –

+0

@didibus La partie "RequestExecutionLevel admin" ajoute les bits manifestes que l'UAC vérifie, donc oui, cela déclenche l'invite UAC ... – Anders

Questions connexes