我有一个WiX
项目,它会在位于ProgramFiles
的文件夹上安装一些可执行文件和库。
运行其中一个可执行文件时出现问题。其中一些需要以Administrator
执行才能执行它应该执行的所有任务。如果我右键单击它,并以管理员身份运行它,它运行良好。但是我希望WiX能够自己提升我文件的权限。
有什么办法吗?
我试过这样做:
<Package Id="$(var.GUID_Package)"
InstallPrivileges="elevated"
InstallScope="perMachine" ...>
和
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
但这两个选项仅适用于.msi
包(不适用于已安装的文件)。
注意:我认为我没有正确解释自己...我的问题来自我安装的文件的权限。由于权限,我无法正确执行它们。当我以管理员身份运行它们时,很明显,所有权限都可以正确执行。所以我要做的就是更改我遇到问题的每个文件的权限。
答案 0 :(得分:0)
安装程序中的任何操作都无法解决此问题。
如果exe正在进行一次性设置,例如修改Prog文件目录中的文件/文件夹,考虑将其移动到wix安装程序中。
如果它是每次运行时发生的事情,您将需要确定它正在做什么并尝试进行更改,以便它以不需要提升的方式执行。如果不可能你将不得不提升我害怕。唯一的另一种方法是将本地计算机策略设置为automatically elevate for administrators。
答案 1 :(得分:0)
您可以选择将msi转换为exe,当用户执行exe时,它会提示用户以管理员身份运行。
我正在使用dontnetinstaller并且它完美无缺。
答案 2 :(得分:-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>
由此我可以提升他们的权限。