2010-12-04 62 views
1

我有一个程序,解压到TEMP目录,运行自己,然后从TEMP目录中删除自己。当我使用NSIS生成的单文件可执行文件尝试运行时,UAC询问:“您是否允许来自未知发布者的以下程序修改您的计算机?”NSIS安装程序要求修改计算机

澄清:安装程序只解压缩到TEMP目录,并且包含的​​程序不会触发UAC。我认为这与NSIS做的事情有关,但我无法弄清楚什么或如何阻止它。我已经删除了我的NSIS脚本的几乎所有的行,并且它仍然愤怒UAC。

如果有问题,我在python2 python2.5上使用py2exe和pymunk和pygame库。 (但是,它再次通过NSIS运行时触发UAC。)

我该如何让它不触发UAC的任何操作?我需要签名密钥吗?

回答

5

RequestExecutionLevel用户

这是因为NSIS是(错误地)通过窗口为需要管理员权限的安装程序检测。 MS甚至没有要求NSIS开发者加入这种检测!

您可能需要使用$ PLUGINSDIR,它是通过自动删除NSIS:

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

哇,谢谢!不是我正在寻找的答案,但是然后stackoverflow总是教我新的东西。 – 2010-12-05 05:17:57

0

Windows有 “安装程序检测” 启发式。你可以通过添加一个清单来压制他们,或者嵌入到exe中,或者坐在它旁边称为whatever.exe.manifest,它说“我不需要提升”。 How to prevent Vista from requiring elevation on patch.exe?是我发现的很多很多问题中的第一个。

安装程序检测启发法几乎完全基于文件的名称,因此如果由于某种原因您不想使用清单,请尝试重命名该文件以避免包含字符串设置,更新,修补程序,等等。

+0

该名称只是其中的一部分,他们还检查应用程序/公司名称,甚至签名检查 – Anders 2010-12-05 18:48:15