visual-studio - 自定义操作不起作用 msiexec /a - Visual Studio 安装项目
问题描述
我有一个创建 setup.msi 的 Visual Studio 设置项目。我在安装期间和之后运行了一些自定义操作。
当我执行命令 msiexec.exe /a setup.msi /qn升级现有安装时,自定义操作不会触发。似乎选项/a(管理执行)正在绕过自定义操作。
任何想法 ?
先感谢您。
解决方案
管理安装在 MSI 中按自己的顺序运行。因此,您实际上可以在其中插入自定义操作(尽管我不建议这样做),并且它们只会在管理安装期间运行。
您需要在正常安装顺序(以及)中插入这些自定义操作,以便它们在正常安装(InstallExecuteSequence
和/或InstallUISequence
)期间运行。
正常安装:
InstallExecuteSequence
InstallUISequence
管理安装:
AdminExecuteSequence
AdminUISequence
广告:还有广告序列。此序列使用:AdvtUISequence
和AdvtExecuteSequence
表。广告是当您注册 MSI 包以供以后安装时。安装可以由用户触发,也可以通过添加/删除程序或通过应用程序触发。按需安装。这些天似乎很少使用(主要原因可能是人们在尝试使用它时面临的技术故障和操作问题)。
文件提取:管理安装本质上是一种美化的文件提取(相当于解压缩)。它提取所有文件,调整媒体表以使用外部文件和其他一些东西。它的主要目的是创建一个安装媒体以放在网络共享上,并允许检查 MSI 的内容。MSI还有“从源代码运行功能”的能力——老实说,我从未见过成功使用过。
笔记!:虽然相当琐碎,但管理安装对于企业打包和 MSI 安装技术的“透明度”至关重要。这种透明性是MSI 技术的主要优势之一(在页面下方略列出)。确保您的 MSI 在管理安装期间正常工作。例如,我认为某些 WiX GUI 集中存在错误。有一个技巧可以通过抑制 GUI 使它们仍然工作。像这样的东西:msiexec.exe /a MySetup.msi TARGETDIR=D:\ExtractHere /qn
在管理安装期间,您需要自定义操作做什么?
推荐阅读
- asp.net - mvc.net core 2.2 中经过身份验证的用户的默认起始页>
- powershell - 用于从所有子文件夹中删除超过 30 天的文件的 PowerShell 脚本
- laravel - 在指向子域的同一服务器上使用 docker 运行两个 Laravel 应用程序
- reactjs - 为什么嵌套 package.json 存在时 webpack 无法编译
- php - 从 json 字符串中删除隐藏的中点字符
- python - 芹菜任务中的函数超时 - 多进程问题
- python - 我应该如何在熊猫中将索引与标题名称合并?
- javascript - 遍历对象获取键和所有父键
- node.js - 电子外部显示边界
- c# - EF6 使用相同的列名进行多对多映射