Inno setup 任务管理器中显示了安装程序的两个实例(使用Inno创建)

Inno setup 任务管理器中显示了安装程序的两个实例(使用Inno创建),inno-setup,Inno Setup,我使用Inno创建了一个安装程序。我要求只在管理模式下启动安装。我已经在Inno中设置了选项([Setup]:PrivilegesRequired=admin)。但这并不能完全帮助我。 在Windows7中,UAC是打开的。当用户点击安装程序时,UAC窗口出现,请求授权。如果用户选择“是”,则会看到安装程序的两个实例正在任务管理器中运行。 但如果用户右键单击安装程序并选择“以管理员身份运行”,UAC窗口就会出现,但这次在任务管理器中只能看到安装程序的一个实例。 我已经编写了一次只运行一个安装程序

我使用Inno创建了一个安装程序。我要求只在管理模式下启动安装。我已经在Inno中设置了选项([Setup]:PrivilegesRequired=admin)。但这并不能完全帮助我。 在Windows7中,UAC是打开的。当用户点击安装程序时,UAC窗口出现,请求授权。如果用户选择“是”,则会看到安装程序的两个实例正在任务管理器中运行。 但如果用户右键单击安装程序并选择“以管理员身份运行”,UAC窗口就会出现,但这次在任务管理器中只能看到安装程序的一个实例。 我已经编写了一次只运行一个安装程序实例的代码。因此,在第一种情况下,安装失败。用户必须始终选择“以管理员身份运行”才能安装。
有没有办法解决此问题?

您在任务管理器中看到的安装应用程序的第二个进程是一个生成进程,用于从安装程序中运行具有相同高程的其他进程

我没有在InnoSetup source中对此进行更深入的检查,但我认为没有办法阻止它的创建。从用户的角度看,这个繁殖过程是隐藏的,你不应该害怕,只是不要试图手动杀死它,让它自己活下去


无论如何,您不需要在脚本中将指令设置为
admin
。这是该指令的默认值,因此您可以删除该行。

这对于Inno来说是完全正常的行为。一个实例运行unlevated,然后通过UAC运行另一个实例。此外,右键单击“以管理员身份运行”实际上对Inno有不利影响。所有的…原始用户功能都不起作用。您所解释的任何内容都不应导致安装失败。@Deanna,可能OP正在终止生成进程,而安装也因此失败(如果我编写的代码只运行安装程序的一个实例意味着某个进程杀手)。否则你肯定是对的!请注意,只有一个安装程序实例运行的正确方法是在
InitializeSetup
中使用
CreateMutex
CheckForMutex
。这不会受到这两个过程的影响(正如Deanna所说,这是完全正常和可取的)。我有一个要求,即我不应允许一次进行多个安装。因此,我正在检测正在运行的安装进程的数量。如果它不止一个,它会将消息抛出给用户并退出安装。在本例中,它退出安装。用户被迫使用以管理员身份运行模式。如果我允许运行多于安装,那么一切都很好。安装没有问题。但我的要求是一次只运行一个安装。你现在正在重新发明轮子。