具有提升的自定义操作的提升的安装程序不会提升可执行文件

筛子

我有一个安装程序InstallPrivileges="elevated"我在文件表中包含一个app.EXE

  <Component Id="myapp" Guid="*">
    <File Id="myapp" Source="myapp.exe"/>
  </Component>

使用这些CA在淘汰状态下运行它:

<CustomAction Id="SetProp" Property="Launch" Value ="&quot;[INSTALLDIR]myapp.exe&quot;"/>
<CustomAction Id="Launch" BinaryKey="WixCA" DllEntry="CAQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>

安排如下:

  <Custom Action="SetProp" Before="Launch">NOT Installed</Custom>
  <Custom Action="Launch" Before="InstallFinalize">NOT Installed</Custom>

但是根据Uachelper类(c#)和缺少的结果,此过程并未提升,但详细日志和myapp.exe日志均未显示错误。

我还尝试使用类型2的自定义操作(binarykey等),类型18的自定义操作(filekey等),并使用requiredadministrator将app.manifest包含在myapp.exe中。

在安装过程中没有任何措施可以提升myapp.exe..。

我发现的解决方法是在安装完成后手动启动myapp.exe(转到[INSTALLDIR]并双击myapp.exe,将提示uac等),但我想避免这种情况。我也考虑过尝试使用,runas但不确定是否可行或可行。

所有这一切都基于http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.htmlhttps://stackoverflow.com/a/10028939/4096653这里这么多的更多的问题。

我想念什么或还能尝试什么?

菲尔·DW

默认情况下,仅当自定义操作被推迟,不模拟并在InstallInitialize和InstallFinalize之间排序时(如果是每台计算机安装),它才会提升,然后使用系统帐户运行。它是否真正有效取决于代码是否准备好处理,因为它知道它不是以具有HKCU,PersonalFolder之类的用户个人资料项访问权限的交互式用户身份运行的,并且代码知道其数据在哪里。当自定义操作可执行文件被触发时,它是通过CreateProcess()类型的调用(不是外壳执行调用)触发的,因此没有UAC对话框/清单检查工作继续进行。因此,如果您推迟了安装WiF并在InstallFinalize之前发布的WiX看起来是正确的。我不知道如果UACHelper类作为系统运行并提升运行状态,会怎么想。

如果您创建一个模拟的启动器自定义操作来执行您的exe的显式Shell Execute,它应该可以工作,因为它的行为就像是交互式用户从Explorer运行的行为。它将运行该应用程序,然后该应用程序将要求提升权限,只要执行安装的用户是admin。在类似ProcessStartInfo.UseShellExecute = true的代码中,ShellExecute()Win32。

如果需要提升模拟的CA,则MSI需要以管理员身份运行,或者从带有提升清单的程序启动,然后再运行MSI。

您会看到很多建议(希望如此),您应该安排在首次运行应用程序时自动运行它,只是启动它并记住它是否已运行。除非您具有提升的启动引导程序,否则从MSI以提升的用户身份运行太复杂了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有提升的自定义操作的提升的安装程序不会提升可执行文件

来自分类Dev

suid可执行文件没有提升权限,但是`sudo`确实可以提升

来自分类Dev

具有提升特权的自定义操作以运行批处理文件

来自分类Dev

删除文件前提升自定义操作

来自分类Dev

删除文件前提升自定义操作

来自分类Dev

运行自定义编译的可执行文件将返回“没有此类文件或目录”

来自分类Dev

可执行文件中定义的自定义配置部分

来自分类Dev

如何在Visual Studio中制作具有多个可执行文件的安装程序包

来自分类Dev

Wix安装程序不会覆盖可执行文件的早期版本

来自分类Dev

在自定义命令中调用找到的可执行文件的正确方法?

来自分类Dev

运行自定义可执行文件,QProcess立即退出,退出代码为1

来自分类Dev

在自定义命令中调用找到的可执行文件的正确方法?

来自分类Dev

运行gud-gdb时如何自定义可执行文件的名称

来自分类Dev

使用自定义根目录启动可执行文件

来自分类Dev

Linux中的自定义可执行文件“打开方式”如何工作?

来自分类Dev

将自定义链接器可执行文件指定为 g++

来自分类Dev

如何直接用名称调用终端中的自定义可执行文件或脚本?

来自分类Dev

如何将自定义文件类型与自定义可执行文件相关联?

来自分类Dev

在Cabal中定义未安装的可执行文件

来自分类Dev

安装的程序可执行文件从错误的位置运行

来自分类Dev

MSI 安装程序的可执行文件

来自分类Dev

当具有不同的安装可执行文件时应使用?

来自分类Dev

Bash是否具有可执行文件缓存?

来自分类Dev

目录具有可执行文件模式

来自分类Dev

安装了KDE的Ubuntu 11.10不会提示在所有应用中提升特权操作的权限

来自分类Dev

如何安装可执行文件

来自分类Dev

在打开文件时使用cxFreeze编译的python可执行文件打开自定义文件类型

来自分类Dev

提升日志未显示自定义时间戳

来自分类Dev

提升python返回包含自定义类型的元组

Related 相关文章

  1. 1

    具有提升的自定义操作的提升的安装程序不会提升可执行文件

  2. 2

    suid可执行文件没有提升权限,但是`sudo`确实可以提升

  3. 3

    具有提升特权的自定义操作以运行批处理文件

  4. 4

    删除文件前提升自定义操作

  5. 5

    删除文件前提升自定义操作

  6. 6

    运行自定义编译的可执行文件将返回“没有此类文件或目录”

  7. 7

    可执行文件中定义的自定义配置部分

  8. 8

    如何在Visual Studio中制作具有多个可执行文件的安装程序包

  9. 9

    Wix安装程序不会覆盖可执行文件的早期版本

  10. 10

    在自定义命令中调用找到的可执行文件的正确方法?

  11. 11

    运行自定义可执行文件,QProcess立即退出,退出代码为1

  12. 12

    在自定义命令中调用找到的可执行文件的正确方法?

  13. 13

    运行gud-gdb时如何自定义可执行文件的名称

  14. 14

    使用自定义根目录启动可执行文件

  15. 15

    Linux中的自定义可执行文件“打开方式”如何工作?

  16. 16

    将自定义链接器可执行文件指定为 g++

  17. 17

    如何直接用名称调用终端中的自定义可执行文件或脚本?

  18. 18

    如何将自定义文件类型与自定义可执行文件相关联?

  19. 19

    在Cabal中定义未安装的可执行文件

  20. 20

    安装的程序可执行文件从错误的位置运行

  21. 21

    MSI 安装程序的可执行文件

  22. 22

    当具有不同的安装可执行文件时应使用?

  23. 23

    Bash是否具有可执行文件缓存?

  24. 24

    目录具有可执行文件模式

  25. 25

    安装了KDE的Ubuntu 11.10不会提示在所有应用中提升特权操作的权限

  26. 26

    如何安装可执行文件

  27. 27

    在打开文件时使用cxFreeze编译的python可执行文件打开自定义文件类型

  28. 28

    提升日志未显示自定义时间戳

  29. 29

    提升python返回包含自定义类型的元组

热门标签

归档