powershell - 带有自定义 Wix 标志命令行参数的 Powershell 卸载应用程序
问题描述
我创建了一个自定义 Wix 标志命令行参数 (FLAG = "remove") 以在卸载期间绕过一些自定义消息框。对于 Windows 批处理命令,命令如下所示:
AppInstaller.exe /quiet /uninstall FLAG="remove"
我想将此命令转换为在 Powershell 中工作,但语法有问题。我尝试了以下方法:
Start-Process ./AppInstaller.exe /s FLAG="remove" -Wait
Start-Process ./ProductivityAppInstaller.exe -ArgumentList /s FLAG="remove" -Wait
Powershell 似乎无法识别我的自定义 Wix 参数。我收到错误“找不到接受参数'FLAG = remove'的位置参数”。
解决方案
您对使用-ArgumentList
. 但是,您需要将参数括在双引号中,并用反引号转义您需要传递给可执行文件的任何双引号文字。
Start-Process -FilePath "./AppInstaller.exe" -ArgumentList "/s FLAG=`"remove`"" -Wait
-ArgumentList
期望将字符串数组传递给它。在幕后,PowerShell 通过空格 ( ) 连接这些数组元素。如果您为参数提供的值是单个字符串,其中 .exe 参数由空格分隔,您将获得相同的结果。由于 PowerShell 在检测到双引号对时会尝试执行字符串扩展,因此您需要指示 PowerShell 在不需要时不要执行此操作。通过转义双引号,PowerShell 将跳过该转义双引号的扩展。
另一种方法是创建一个参数数组。然后将数组传递给-ArgumentList
参数。您仍然必须通过用单引号包围参数或进行反引号转义来将双引号作为字符串的一部分包含在内。
推荐阅读
- c - 如何在 PIE 可执行文件中链接使用 --relocatable 生成的文件?
- header - 隐藏行中的分隔符 v-data-table
- linux - 如何在基于 Alpine Linux 的 docker 容器的 PATH 中添加 Maven Home (M2_HOME)
- docker - Docker镜像合成COPY命令
- mysql - MySQL 数据库不显示
- https - wso2-am https API
- nginx - 使用 k8s 入口控制器副本中的票证恢复 SSL 会话不起作用
- azure - Powershell 停止 Azure 备份
- python - 从 numpy recarray 创建单个记录的可更新视图
- android - 错误:ADB 退出并退出代码 1 使用 Flutter 执行流式安装,使用 M1 执行 Mac Big Sur