我有一个简单的应用程序,我正在安装一个exe并在安装结束时运行它。但是当安装完成后,它会显示app.exe的第二个提升对话框,我不希望它显示,这是我的wix代码。
<?xml version="1.0" encoding="UTF-8"?>
<!-- The following three sections are from the How To: Add a File to Your Installer topic-->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="APPLICATIONROOTDIRECTORY" Name="My Application Name"/>
</Directory>
</Directory>
<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<Component Id="app.exe" Guid="12345678-1234-1234-1234-222222222223">
<File Id="app.exe" Source="MySourceFiles\app.exe" KeyPath="yes" Checksum="yes"/>
</Component>
</DirectoryRef>
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="app.exe" />
</Feature>
<!-- Step 2: Add UI to your installer / Step 4: Trigger the custom action -->
<InstallExecuteSequence>
<Custom Action='LaunchInstalledExe' After='InstallFinalize'/>
</InstallExecuteSequence>
<CustomAction Id="LaunchInstalledExe"
FileKey="app.exe"
ExeCommand=""
Return="ignore" />
答案 0 :(得分:2)
该可执行文件正在InstallFinalize之后运行,因此默认情况下它不会被提升,并且它显然有一个提升清单,因此它会要求提升。我会在InstallFinalize之前尝试(而不是立即),看看是否能解决这个问题,你可能也想要它被冒充。 InstallFinalize之后是更安全的地方。问题是管理员可以启动安装(或通过组策略将其推出)并离开,让有限的用户可以访问运行提升的程序,这可以做一些有限的用户不应该做的事情。我当然不希望为有限的用户启动安装,以后会导致该用户访问可以配置数据库安全性的程序。因此,从安全角度来看,从InstallFinalize之后产生的提升提示是合适的。但这一切都取决于您的客户及其环境和产品本身。