0

我有一个WiX项目,它在位于ProgramFiles.

运行这些可执行文件之一时会出现问题。其中一些需要执行Administrator以完成它应该完成的所有任务。如果我右键单击它并以管理员身份运行它,它运行良好。但我希望 WiX 自行提升对我文件的权限。

有什么办法吗?

我试过这样做:

<Package Id="$(var.GUID_Package)"
         InstallPrivileges="elevated"
         InstallScope="perMachine" ...>

和:

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />

但这两个选项仅适用于.msi软件包(不适用于已安装的文件)。

注意:我认为我没有正确解释自己......我的问题来自我安装的文件的权限。由于权限,我无法正确执行它们。当我以管理员身份运行它们时,显然,所有权限都可以正确执行。所以我必须做的是更改我遇到问题的每个文件的权限。

4

3 回答 3

0

您在安装程序中执行的任何操作都无法解决此问题。

如果 exe 正在执行一次性设置,例如修改 Prog 文件目录中的文件/文件夹,请考虑将其移动到 wix 安装程序中。

如果它是每次运行时都发生的事情,那么您将需要确定它正在做什么并尝试改变,以便它以不需要提升的方式进行。如果不可能,恐怕您将不得不提升。帮助此的唯一其他方法是将本地计算机策略设置为自动提升管理员权限

于 2013-03-21T17:08:29.230 回答
0

您可以选择将您的 msi 转换为 exe,当用户执行 exe 时,它​​将提示用户以管理员身份运行。

我正在使用dontnetinstaller并且它工作得很好。

于 2013-03-21T22:11:23.783 回答
-1

对于那些可能感兴趣的人,我找到了解决方案。

起初,我在我的.wxs项目中添加了对 的引用WixUtilExtension,您可以在 WiX 文件夹中找到它。

您还可以将其添加为外部引用,如下所示:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"

之后,我可以在本地使用PermissionEx

   <File Id="$(var.productFamily)$(var.productSummary)"
      Name="$(var.productFamily)$(var.productSummary).exe"
      DiskId="1" KeyPath="yes"
      Source="$(var.release)$(var.productFamily)$(var.productSummary).exe" >
      <util:PermissionEx User="Everyone" GenericAll="yes" ChangePermission="yes" />
  </File>

这样我就可以提升他们的权限。

于 2013-03-21T18:06:06.733 回答