2010-12-04 37 views
1

J'ai un programme qui décompresse dans le répertoire TEMP, s'exécute, puis se supprime du répertoire TEMP. Lorsque l'exécutable à fichier unique que j'ai généré avec NSIS essaie de s'exécuter, l'UAC demande: "Voulez-vous autoriser le programme suivant d'un éditeur inconnu à modifier votre ordinateur?" Pour plus de clarté: le programme d'installation décompresse uniquement dans le répertoire TEMP et le programme contenu ne déclenche pas le contrôle de compte d'utilisateur. Je pense que cela a à voir avec quelque chose que NSIS fait, mais je ne peux pas comprendre quoi ou comment l'arrêter. J'ai supprimé presque toutes les lignes de mon script NSIS, et cela irrite toujours l'UAC.Le programme d'installation de NSIS demande de modifier l'ordinateur

Si cela est important, j'utilise py2exe sur python2.5 sous Windows 7 avec les bibliothèques pymunk et pygame. (Mais encore une fois, il ne déclenche UAC lorsqu'il est exécuté par NSIS.)

Comment puis-je le faire déclencher quoi que ce soit que UAC est dans les bras? Ai-je besoin d'une clé de signature?

Répondre

5

RequestExecutionLevel utilisateur

Cela se produit parce que NSIS est (à tort) détecté par Windows comme un programme d'installation qui nécessite des droits d'administrateur. MS a ajouté cette détection sans même demander aux développeurs NSIS!

Vous pouvez utiliser pluginsdir $, il est automatiquement supprimé par nsis:

Section 
InitPluginsDir 
SetOutPath $pluginsdir 
File myapp.exe 
ExecWait '"$pluginsdir\myapp.exe"' 
SetOutPath $temp ;make sure pluginsdir is not locked 
SectionEnd 
+0

Wow, merci! Pas la réponse que je cherchais, mais stackoverflow m'apprend toujours quelque chose de nouveau. –

0

Windows a heuristiques "de détection d'installation". Vous pouvez les supprimer en ajoutant un manifeste, soit incorporé dans l'exe ou assis à côté de lui appelé whatever.exe.manifest, qui dit "Je n'ai pas besoin d'élever". How to prevent Vista from requiring elevation on patch.exe? est la première des nombreuses questions que j'ai trouvé qui couvrent cela.

Les heuristiques de détection d'installateur sont basées presque entièrement sur le nom du fichier, donc si pour une raison quelconque vous ne voulez pas utiliser un manifeste, essayez de renommer le fichier pour ne pas inclure les chaînes setup, update, patch, etc.

+0

Le nom est juste une partie de celui-ci, ils vérifient également le nom de l'application/entreprise et même les contrôles de signature – Anders