普通用户无法执行 WiX 安装的程序

WiX installed program cannot be executed by normal user

当我将文件复制到文件夹中时,我有一个 .net 程序 运行 在目标机器上(由非管理员)。

但是,当我创建一个安装程序(使用 Wix)安装到目标机器上并尝试 运行 它时,出现以下错误:

Problem signature:
  Problem Event Name:   CLR20r3
  Problem Signature 01: RN14W3TBEKIWLLFBCD5MLN3WYLZ522KZ
  Problem Signature 02: 1.7.20.0
  Problem Signature 03: 57afb905
  Problem Signature 04: mscorlib
  Problem Signature 05: 4.0.30319.34209
  Problem Signature 06: 53489fcf
  Problem Signature 07: 4524
  Problem Signature 08: 13c
  Problem Signature 09: System.UnauthorizedAccess
  OS Version:   6.1.7601.2.1.0.768.3
  Locale ID:    1033
  Additional Information 1: e3b9
  Additional Information 2: e3b9870467ec4722310fb4741c3dc189
  Additional Information 3: 88d1
  Additional Information 4: 88d10b8987a6d3ce2924300f4efa24bb

我尝试了以下方法来解决问题:

  1. 在包命令中尝试使用 installScope 作为 perMachine 和 perUser
  2. 在 setup.exe 中添加了清单并将 requestedExecutionLevel 更改为 asInvoker 和 requireAdministrator。

通过一些试验和错误,这在大约 6 个月前工作,但我不记得我做了什么。任何想法将不胜感激。

安装与应用程序实际 运行s 时发生的情况基本无关。您不能让安装以某种方式允许受限用户 运行 需要提升的应用程序。如果您希望应用程序 运行 提升,那么这就是需要提升清单的原因,而不是执行安装的 setup.exe。

最可能的原因是 WiX 将应用程序安装到 Program Files 文件夹,并且该应用程序正在尝试在该位置创建或更新文件。 Program Files 文件夹始终需要提升权限才能访问那里的 create/update 文件。基本上崩溃信息没有帮助,因为问题将是代码正在尝试访问或更新需要提升的内容,因此代码需要调试。

这里的基本点是安装不能 "bless" 安装的应用程序,因此它可以被有限的用户用来做需要提升的事情。需要对应用程序进行调试,了解它正在做什么需要提升,一个常见的问题是尝试更新受限用户无法访问的位置的文件,例如 Program Files、Common Files 文件夹。