是否可以被动安装 .EXE 但仍使用 Powershell 显示 GUI?

2023-12-14

正如标题所说,是否可以使用 Powershell 被动/静默安装 .EXE,但仍然显示安装程序 GUI?我希望下一个自动“单击”,但仍然希望 GUI 显示为进度指示器。


UPDATE: 有一个用于 Windows Installer 的 Powershell 模块。它可以帮助以比处理更简单的方式运行 msiexec.exe 等效命令Powershell 的怪癖.


MSI?:如果这是 EXE 包装器内的 MSI,则以下内容通常可以工作。如果它只是一个普通的 EXE 文件,您应该重新打包为 Painter 答案 - 或者使用正确的开关静默运行它 - 如果可能的话。

  • MSI提取: 从 EXE 中提取 MSI.

  • 重新包装:最后的办法是使用捕获工具将 EXE 转换为 MSI。

    • 关于重新包装的快速总结(将 setup.exe 转换为 MSI - 更多链接:底部)
    • 如何使用调整后的设置在 /silent 模式下运行安装

建议:我建议根据您编写的内容使用此命令行(完成时显示模式框的基本 UI 并在安装过程中隐藏取消按钮):

msiexec.exe /I "setup.msi" /qb+!

带有隐藏取消按钮的示例进度对话框:

progress dialog with hidden cancel button


击键:听起来您希望整个 GUI 向导显示出来,并“自动神奇地”单击所有按钮?那很难。像 AutoIt 这样的疯狂工具(将击键推送到应用程序窗口的工具)可以做到这一点,但这与普通的纸牌屋一样可靠。这种管道胶带方法总是存在错误源。

Silence!:我假设您知道您可以使用标准命令行开关来抑制 MSI 的整个 GUImsiexec.exe?您可以选择完全静音的 GUI 或完全像您所描述的进度条以及许多其他组合。您甚至可以隐藏取消按钮。漂亮。

UILevel:MSI支持各种“UI 级别”- 安装可以是不同程度的交互性,从完全静音到完全交互。有 4 个基本级别和各种“修饰符”(显示或不显示完成对话框)。以下是实践中不同 UILevel 的答案:从控制面板卸载与从 .msi 删除不同

Examples:以下是一些进一步的示例命令行:

  • 完全安静,根本没有 GUI:

    msiexec.exe /i "setup.msi" /qn
    
  • 基本 GUI,没有模式对话框和隐藏的取消按钮:

    msiexec.exe /i "setup.msi" /qb-!
    
  • 除了最后显示的模式对话框外没有 GUI:

    msiexec.exe /i "setup.msi" /qn+
    

Note:还有几种进一步的组合,具体取决于您如何使用4 个不同级别的 GUI,模态对话框是否结束,最后隐藏或显示取消按钮。


Advanced:除了正常使用 msiexec.exe 之外,您还可以通过 MSI Win32 API 以编程方式抑制 MSI 的整个 GUI,并自行处理进度消息。

  • 使用 MsiSetExternalUI 处理进度消息(C++ 示例代码,也在 github.com 上)
  • 外部 MSI GUI 上的服务器故障答案

WiX 捆绑包: 这是这个方法WiX工具包用于为捆绑包提供自己的现代 GUI。高级安装程序 and 安装盾其他人也有类似的概念。与 Windows Installer 的集成全部基于这些 API 调用。


Links:

  • 提示:MSI 安装的用户界面级别
  • 从控制面板卸载与从 .msi 删除不同
  • 从 PowerShell 运行 MsiExec 并获取返回代码

重新包装:

  • 从提取的安装文件创建 MSI (and 同一篇文章中的另一个答案)
  • 捕获 Windows 上应用程序安装期间的所有更改
  • http://blog.deploymentengineering.com/2004/12/chriss-rant-about-repackaging.html
  • http://www.installsite.org/pages/en/msi/admins.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以被动安装 .EXE 但仍使用 Powershell 显示 GUI? 的相关文章

  • 将.exe项目转换为类库

    我在 Visual Studio 2010 Ultimate 中有一个半大型 C exe 项目 我想将其转换为 DLL 类库 有没有一种简单的方法可以做到这一点 而不涉及创建新的类库项目 预先感谢 项目 gt 属性 gt 应用程序选项卡 将
  • 如何使用 PowerShell 扩展 ZIP 存档(UTF-8 文件名)

    我的 zip 存档有一个文件 P re No l txt 该 zip 可以通过 Windows 文件资源管理器 7 Zip 或我尝试过的任何其他工具很好地扩展 但我不知道如何从 PowerShell 中做到这一点 显然我已经尝试过展开 存档
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • 有没有办法在 MS Windows(Powershell 或 CMD)的 ripgrep 中转义引号?

    我想找一个字符串 Hello Hello 以双引号开头 在文本文件中使用ripgrep 通常 在 Bash 或 ZSH 中 这可以通过用反斜杠转义或用单引号括起来来实现 rg Hello rg Hello 然而 在 MS Windows P
  • 在 .Net 中保持 Powershell 运行空间打开

    我正在尝试从 VB Net 中运行一些 PowerShell 代码 如果您知道的话 C 编码器也可能会有所帮助 代码的第一部分 我需要使用密码连接到 na 控制器 并且需要保持连接打开 我还有其他命令需要通过单击按钮来运行 获取文件 显示文
  • 将带有星号的注册表项传递给测试路径

    我想通过以下方式运行此注册表路径Test Path在 PowerShell 中 但它包含一个星号 该星号在注册表中有效 但在 Windows 路径中无效 问题是 当我通过它时 Test Path将星号视为通配符 因此这需要非常非常长的时间
  • 如何在 PowerShell 中从网络下载整个文件夹的文件/子文件夹

    我可以使用以下命令从网络下载单个文件 wc New Object System Net WebClient wc DownloadFile http blah root somefile ext C Downloads www blah r
  • 如何使用 PowerShell 中的凭据从本地复制到远程位置?

    我是 PowerShell 的新手 我有用户名和密码来访问远程位置的共享文件夹 I need 复制文件foo txt从当前位置到 Bar foo myCOmpany com logs在为以下内容编写的 PS1 脚本中Powershell v
  • 如何在C#和Azure启动任务中自动更新EXE项目?

    我在我的天蓝色相关项目中面临着一个关键且有趣的问题 我创建了一个 Web 应用程序 用户可以从那里下载一个插件 C 中的 EXE 项目 并在解压后上传 EXE 和配置文件到部署在 Azure 平台上的应用程序的启动任务 并且该 exe 定期
  • 仅从 AD 获取计算机名称

    我是 Power Shell 新手 正在测试一些命令和想法 我坚持认为应该很简单的事情 我想将 AD 中计算机对象的名称提取到文件中 到目前为止我正在尝试的方法是这样的 computers Get ADComputer Filter For
  • 如何为 WIX 中的目录分配路径值?

    在我的 WIX 项目中 我有一个类似这样的目录结构
  • Azure Runbook 输出到电子邮件

    我正在尝试将 VM 状态的输出从 Azure 自动化 Runbook 发送到电子邮件中 我使用以下代码 function Send EMail Param Parameter Mandatory true String EmailTo Pa
  • Powershell删除文件夹-force

    我似乎无法删除文件 文件夹 除非我必须为所有文件 文件夹输入 A 我缺少什么 Get Childitem C Users AppData Local Temp ErrorAction SilentlyContinue Where Creat
  • 生成Mst响应工具

    我正在尝试使用 C 创建一个工具来获取通过单击 msi Windows 安装程序 的对话框生成的属性 我可以通过在 msi 关闭之前读取 property 表来获取最终的 msi 属性 但这包含相当多的不需要的属性 例如目录等 我希望能够做
  • Process.以另一个用户身份在网络共享上启动 exe 文件

    我需要运行位于我的域中的网络驱动器上的 exe 文件 该驱动器已作为 M 成功连接到我的电脑 但我知道 Process Start string string 在启动位于网络共享上的进程时需要具有文件的 URL 路径 这是我的代码 stri
  • 使用powershell计算子文件夹中具有特定名称的文件数量

    因此 我开始解决一个问题 我需要知道某个名称的子文件夹中有多少个文件 这些文件在整个目录中重复多次 我想要计算的所有文件夹都具有相同的名称 例如 Main Folder Subfolder Folder I want to count Fo
  • 什么是@”运算符?

    我在互联网上搜索了这意味着什么 包括 and 单独 正是在这个code https gist github com jakeballard 11240204 Win32ShowWindowAsync Add Type memberDefin
  • Foreach-object Parallel 块内的错误处理 - Powershell 7

    在下面的 Foreach Object Parallel 块中捕获错误的最佳方法是什么 因为将有三个单独的线程 运行空间运行并执行块中写入的代码 并且可能同时发生多个错误 异常 是否可以捕获列表 变量中的所有错误并在脚本执行结束时显示 1
  • PowerShell脚本将标签值从一个文件替换到另一个文件(标签值)

    我需要使用 powershell 脚本将标签值从另一个文件替换到一个文件中 Example File A

随机推荐

  • Kafka 服务器不返回任何内容

    Zookeeper 已在 Windows 环境中启动并运行 现在 当我使用以下命令启动 Kafka 服务器时 bin windows kafka server start bat config server properties 没有显示任
  • 编写 Hyperledger Fabric Chaincode 时应遵循的最佳实践

    为了避免错误并编写高效的 Hyperledger Fabric Chaincode 应该遵循哪些最佳实践 编写 Hyperledger Fabric 链码的一般指南 有关详细说明 请参阅以下链接 https gist github com
  • Mockito - 奇怪的包范围类继承问题

    发现非常有趣的问题 并在调试后找到了重现它的场景 因此 如果我有一个包范围 B 的类 该类具有一些公共方法和扩展它的公共类 A package somepackage class B public void someMethod throw
  • 多处理 AttributeError 模块对象没有属性“__path__”

    我有一个很长的脚本 最后需要对庞大列表的所有项目运行一个函数 这需要很长时间 例如考虑 input a 1 2 3 4 a lengthy computation on some data print test 1 for testing
  • 如何使用Python字典? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我发现在 python 中迭代字典很困难 我已经通过 CodeAcademy 完成了学习并独立学习 但仍然觉得翻字典很困难 除了 Python 官方
  • java.io.IOException:参数无效

    我有一个带有负载均衡器的以集群模式运行的 Web 应用程序 它由两个 Tomcat T1 和 T2 组成 仅寻址一个 DB T2 通过 nfs 安装到 T1 这是两个节点之间唯一的差异 我有一个生成一些文件的java方法 如果请求 在 T1
  • 无法设置音量,音量控制未转发到系统

    我尝试使用安卓MediaPlayer框架来发挥mp3 file 看到这个问题 在我设法使其工作后 我很快意识到 音量增大 减小事件被类捕获javafxports android KeyEventProcessor并且永远不会被转发 我试图规
  • 计算特定撞击角度的 box2d 冲量

    我有一个球 圆形的动态物体 它在重力条件下作用在表面 蹦床 上 当球撞击蹦床 图中从 A 点到 B 点绘制 时 我想向球施加一个脉冲 垂直于蹦床表面 问题是现在我使用 b2Vec2 impulse b2Vec2 0 self fullMas
  • Google 地图 API + Google 地图引擎/我的地图

    我已经使用 Google 地图引擎将带有图层和形状的自定义地图嵌入到我的网页中 但它即将停止使用 替代品是 Google 我的地图 它很轻量 但似乎可以满足我的需求 现在回答我的问题 我正在使用 Google 地图 API 在我的网页上显示
  • 检测文档就绪时自动填充的值

    我有一个登录页面 我试图在其中切换按钮的显示以允许用户修改其角色 从用户的可用角色列表中选择 我最初隐藏按钮并显示它 txtUsername blur 我的问题 有没有办法获取 Chrome 自动填充值 如果我尝试在文档准备好时触发它 则该
  • 从应用程序资源保存到 SD 卡的图像编号

    我的应用程序由天列表视图组成 每天都有其特定的图像放置在无限的图库类中 我想做的是 将具有序列号的图像从应用程序可绘制资源 无限图库类 保存到 SD 卡 我试图获取保存图像的顺序号 如下所示 第一张图片 Image 1 png 第二张图片
  • 键入 ruby​​ 新哈希值

    Ruby 1 9 2 的新哈希语法有一个奇怪的问题 在 1 9 2 中如何将任何对象作为哈希中的键 在 1 8 7 哈希中它的工作原理 a b a gt some a gt another value a gt 3rd value 但在 1
  • 使用 sklearn RandomizedPCA 处理稀疏矩阵和稠密矩阵时的不同结果

    当我得到不同的结果时Randomized PCA稀疏矩阵和稠密矩阵 import numpy as np import scipy sparse as scsp from sklearn decomposition import Rando
  • 删除所有属性

    是否可以使用 jQuery 一次删除所有属性 img src example jpg width 100 height 100 to img I tried img removeAttr 没有运气 任何人 一个不需要 JQuery 的简单方
  • 创建过多 AVPlayer 实例时出现 AVPlayerItemStatusFailed 错误

    我正在开发一个 iOS 应用程序 它创建用户池提交的所有视频的提要 使用户能够浏览和查看其他人创建的视频 正如您可以想象的那样 我需要能够支持 feed 中任意数量的视频 目前 我正在为每个视频创建并保留一个 AVPlayer 实例 如下所
  • 安装 debug_inspector (0.0.2) 时出错,Bundler 无法继续

    将我的 Rails 应用程序从 3 2 迁移到 4 0 0 并将 ruby 2 2 2 迁移到 2 2 4 在进行捆绑安装时遇到 安装 debug inspector 0 0 2 时发生错误 并且 Bundler 无法继续 问题 使用 ub
  • 自定义ListCellRenderer不会改变背景颜色

    我有这门课 SuppressWarnings serial private class DataCellRenderer extends JLabel implements ListCellRenderer public DataCellR
  • 为什么 String.intern() 在 Oracle JDK 1.7 中的行为不同?

    这是一个java片段 public class TestIntern public static void main String argvs String s1 new StringBuilder ja append va toStrin
  • 使用 Delphi 2007 将 Base64 字符串作为二进制文件保存到磁盘

    我有一个 Base64 二进制字符串 它是由第 3 方供应商发送给我们的 XML 文档的一部分 我希望能够将其保存回其原始文件格式 jpg 使用此问题中接受的答案 使用 php 将 Base64 字符串作为二进制文件保存到磁盘 我可以轻松地
  • 是否可以被动安装 .EXE 但仍使用 Powershell 显示 GUI?

    正如标题所说 是否可以使用 Powershell 被动 静默安装 EXE 但仍然显示安装程序 GUI 我希望下一个自动 单击 但仍然希望 GUI 显示为进度指示器 UPDATE 有一个用于 Windows Installer 的 Power