c# - WiX CustomAction 的子进程忽略 -Verb runAs
问题描述
我有一个需要在管理员权限下运行 PowerShell 脚本的 WiX CustomAction。在 C# 中,执行此操作的明显方法如下:
var startInfo = new ProcessStartInfo
{
FileName = "powershell.exe",
Arguments = $"-File myscript.ps1",
Verb = "runAs",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true
};
var process = Process.Start(startInfo);
该脚本需要管理员权限才能运行(使用#Requires -RunAsAdministrator
)。
在提示用户允许安装程序对机器进行更改后执行此自定义操作。即 After="InstallInitialize"。
请有人建议我如何解决这个问题。例子会很棒。
解决方案
自定义操作必须已经在提升运行。这是通过将其安排为没有模拟的延迟自定义操作并在 InstallInitialize 和 InstallFinalize 之间的 InstallationExecuteSequence 中安排来实现的。
c#/.net 还可以创建一个 powershell 管道,以便您可以加载脚本并执行它。这使您可以更好地控制错误处理以及记录到安装程序日志的能力。否则,如果您真正想做的只是掏空,您可以使用 WiX Quiet Execute 自定义操作模式,它会为您完成所有这些操作并将输出捕获到 MSI 日志。
推荐阅读
- sum - 如何在 Cypher 中对两个数字求和?
- c# - C# IEnumerable
, 如何为 T 的成员/属性赋值 - visual-studio - Visual Studio 2019 - 在标签移动/取消停靠之前隐藏代码
- javascript - 如何使用 css 绘制参考线(蓝色辅助线),就像 firefox devtools 中的一样?
- javascript - 猫头鹰旋转木马检查项目计数做某事
- javascript - 尝试更新对象中的数组并获取 TypeError: Cannot read properties of undefined (reading 'name')
- python - 在 Scala 代码和 Spark 中使用 Python 中的 pmdarima 库 - 时间序列
- html - 如何在 Nuxt 中导入和使用自定义 Chart.js 插件?(Chartjs-vuejs v2.9.4)
- python - 如何编写一个 Python 计算机程序,它将任何有效的算术表达式作为字符串并输出一个列表(或字符串数组)?
- python - 是否可以使用预签名的 url 通过 lambda 函数将文件上传到 s3?