msiexec是安装MSI程序的命令提示符软件.但我发现只需在命令行输入MSI文件的名称,就可以从命令行安装MSI文件.
但是为了卸载MSI文件,你似乎必须调用该msiexec程序并给它一个/x或/uninstall.
如何在不使用msiexec例程的情况下从命令行卸载MSI ?
我想提取EXE设置的MSI以通过网络发布.
例如,使用Universal Extractor,但它不适用于Java Runtime Environment.
我一直在尝试使用以下命令为安装程序创建问题的日志文件:
msiexec /i "installer.msi" /l*v "log.log"
msiexec /i "installer.msi" /l*v
msiexec /l*v /i "installer.msi"
msiexec /l*v "log.log" /i "installer.msi"
Run Code Online (Sandbox Code Playgroud)
和命令的其他几个变体,但它总是弹出窗口,说明哪些命令行参数对msiexec有效.使msi文件创建日志的正确方法是什么?我有Windows安装程序4.5.
使用WiX(Windows Installer for XML)工具集创建Windows安装程序时,如何使安装过程将日志记录信息写入日志文件?
是否有命令行开关触发日志文件的输出?
我们来讨论以下主题.目前正在部署的应用程序有很好的知道xcopy方法.这种方法很难管理依赖项,文件更新等.有一些软件包的帮助下启动应用程序部署的想法,你知道你在Linux的帮助下RPM,但适用于Windows.
所以我有疑问:在Windows经典Windows安装程序(msi)或nuget或其他东西上使用什么包系统更好?
如何对两个(或更多)MSI文件进行 " 内容比较 " 并查看文件内部实际不同的内容 - 而不是进行无用的二进制比较?(这显然只告诉我我是否正在处理同一文件的副本).
一些相关和典型的问题场景:
这是一个Q/A风格的问题,主题是比较已编译的MSI文件以确定存在哪些真正的"内容差异".
标题说明了一切.我似乎找不到一个完整的命令/标志/事物列表 - 我可以从命令行执行操作.
我正在尝试在服务器上安装 Windows 服务,当以管理员身份运行命令行并导航到 InstalUtil.cmd 文件并运行它时,我收到错误“msiexec failed: 1603”,但是该服务确实已安装并且按预期完美运行。有任何想法/建议来修复错误消息吗?
经过一番谷歌搜索后,我想出了一个配置,该配置应该允许我仅安装包的较新版本(它确实如此),同时替换旧的、已安装的版本(它没有)
我的wxs文件如下:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="Gdml File Viewer" Language="1033"
UpgradeCode="5fb07c15-32a5-4b8a-9794-e4425bfc2eea"
...>
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine" Platform="x64" />
<MajorUpgrade Schedule="afterInstallValidate"
DowngradeErrorMessage="A later version of [ProductName] is already installed"
AllowSameVersionUpgrades="no"
AllowDowngrades="no" />
...
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,它确实允许我安装较新的版本,但旧版本未卸载。它仍然显示在“应用程序和功能”列表中:

(另一个实例的版本为2019.14.181.35181)
wix ×6
msiexec ×3
.net ×2
command-line ×2
installation ×2
logging ×2
bootstrapper ×1
burn ×1
extract ×1
nuget ×1
orca ×1
windows ×1