简体   繁体   English

使用requireAdministrator添加应用程序清单会破坏Installshield自定义操作

[英]Adding an application manifest with requireAdministrator breaks Installshield custom action

@All, @所有,

I was successful in adding and running a custom action see ( Be able to pass the installation directory with a custom installshield setup ) 我成功添加并运行了自定义操作,请参见( 能够通过自定义installshield安装程序传递安装目录

This application needs to run with Administrator rights so I added these (add an application manifest to my c# application and set the following execution level '<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />' 此应用程序需要以管理员权限运行,因此我添加了这些权限(将应用程序清单添加到我的C#应用​​程序中,并设置以下执行级别'<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />'

When rebuilding the setup and deploying it on the same machine I now get the message that the file cannot be found see the image below 当重建设置并将其部署到同一台计算机上时,我现在收到消息,提示找不到文件,请参见下图

在此处输入图片说明

App.manifest App.manifest

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            Specifying requestedExecutionLevel node will disable file and registry virtualization.
            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- A list of all Windows versions that this application is designed to work with. 
      Windows will automatically select the most compatible environment.-->

      <!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->

      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->

      <!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->

      <!-- If your application is designed to work with Windows 8.1, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>-->

    </application>
  </compatibility>

  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
  <!-- <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>-->

</asmv1:assembly>

Any help is greatly appreciated. 任何帮助是极大的赞赏。

任何自定义操作都不会以提升的特权(管理员)运行,这可能是失败的原因。

Assuming your custom action directly launches an .exe file, Windows Installer uses CreateProcess rather than ShellExecute behind the scenes, and this does not elevate during the process launch. 假设您的自定义操作直接启动.exe文件,则Windows Installer在幕后使用CreateProcess而不是ShellExecute,并且在启动过程中不会升高。 So that means you have to use a custom action scheduling that is already elevated. 因此,这意味着您必须使用已经提升的自定义操作计划。

In the limited edition, only the two scheduling locations "After Register Product" and "After System Changes" are elevated. 在限量版中,只有两个计划位置“注册产品之后”和“系统更改之后”被提升。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 InstallShield-软件卸载例程中缺少“自定义操作” - InstallShield - Custom Action is missing in software uninstall routine 清单中的Windows 8 Store App(C#)requireAdministrator无法正常工作 - Windows 8 Store App (C#) requireAdministrator in manifest not working InstallShield-在C#WIX DTF自定义操作dll中访问CustomActionData - InstallShield - Accessing CustomActionData in C# WIX DTF custom action dll 如何使用InstallShield在C#.net项目中创建自定义操作? - How to create Custom Action in C#.net project with InstallShield? Installshield 2013合并模块+ WIX C#自定义操作项目 - Installshield 2013 Merge Module + WIX C# Custom Action Project 添加WPF Desktop Projects应用程序(具有多个模块)以构建InstallShield安装程序 - Adding WPF Desktop Projects Application(with multiple modules) to build InstallShield Setup 如何通过Installshield创建自定义操作,该操作调用带有字符串参数的WiX自定义操作? - How can I create Custom Action through Installshield which calls a WiX Custom Action taking a string parameter? Installshield添加项目文件 - Installshield Adding project files 添加新的 package 会破坏 .NET 5 应用程序 - Adding new package breaks the .NET 5 application 在Installshield中添加MSI的先决条件 - Adding prerequisite for msi in Installshield
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM