NSIS安装程序要求修改计算机

时间:2010-12-04 04:45:49

标签: uac nsis

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

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

如果重要的话,我在Windows 7上的python2.5上使用py2x和pymunk和pygame库。 (但同样,它只会在通过NSIS时触发UAC。)

如何让它不会触发UAC的任何内容?我需要签名密钥吗?

2 个答案:

答案 0 :(得分:5)

RequestExecutionLevel用户

这是因为Windows(错误地)将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

答案 1 :(得分:0)

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

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