在Advanced Installer中安装结束时执行多个exe

时间:2015-07-10 11:06:59

标签: installation windows-installer advanced-installer

我想在安装完成后执行两个文件,但我不希望它们显示UAC对话框。我试图使用最大执行级别但它不起作用。

2 个答案:

答案 0 :(得分:2)

我假设可执行文件是在“Install Execute”序列之外启动的。当用户点击“安装完成”对话框上的“完成”按钮时,我猜您正在尝试启动这些可执行文件。
使用UAC时,应用程序和任务始终在非管理员帐户的安全上下文中运行,除非管理员专门授权对系统进行管理员级别的访问。即使您以管理员身份登录,您运行的任何应用程序都不会以完全管理权限运行。每个需要管理员访问令牌的应用程序都必须提示管理员同意。管理员登录时,会为用户创建两个单独的访问令牌:标准用户访问令牌和管理员访问令牌。标准用户访问令牌包含与管理员访问令牌相同的用户特定信息,但会删除管理Windows权限和SID。标准用户访问令牌用于启动应用程序。然后使用标准用户访问令牌显示桌面(Explorer.exe)。 Explorer.exe是父进程,所有其他用户启动的进程都从该进程继承其访问令牌。因此,除非用户提供同意或凭据以批准应用程序使用完整的管理访问令牌,否则所有应用程序都以标准用户身份运行。

在您的情况下,我假设从非提升的命令提示符安装msi包。因此,msi包正在以标准用户权限运行。因此,从InstallExecute序列之外的这个msi包生成的任何子进程都将以标准用户权限运行。

对于符合UAC的应用程序,应用程序需要在应用程序清单中指定“请求的执行级别”。请求的执行级别指定应用程序所需的权限。

可执行文件的应用程序清单中请求的执行级别是什么? 您可以通过使用名为“sigcheck.exe”的Sysinternals套件中的工具来验证exectuable的嵌入式清单中指定的请求执行级别。

验证请求的执行级别。 我认为它设置为“requireAdministrator”,因为它被提示提升。将此更改为“asInvoker”,然后您的问题应该得到解决。

您可以在以下位置了解有关UAC的更多信息:

https://technet.microsoft.com/en-us/library/jj574202.aspx

此致

Kiran Hegde

答案 1 :(得分:1)

当您声明已使用“最高执行级别”时,您的意思是什么? 您是否在可执行文件的清单中使用“highestAvailable”的级别值?

查看MSDN文章以供参考:

https://msdn.microsoft.com/en-us/library/bb384691.aspx

如果启动的可执行文件不需要任何特殊权限来操作,您应该坚持使用“asInvoker”级别。这将阻止可执行文件显示UAC对话框。

此致 Kiran Hegde