以编程方式更新 MSI 属性

2024-01-30

我需要一个解决方案,希望它应该相当简单 - 更新 MSI 属性。我们有许多在 TFS 2012 中进行源代码控制的 WiX 项目,并且我们生成其相关的 MSI,以便通过 TeamCity 构建配置进行部署,这些配置通常会构建所需的 *.wixproj 文件。

更新 TFS/Visual Studio 中的 MSI 属性根本不是一个选项,因为我们需要将更改限制在 TeamCity 中,而这取决于我们整个持续集成和部署流程当前的设置方式。

因此,我希望实现的是一个解决方案,我可以在创建所需的 MSI 属性后运行脚本或命令来更新它。我欢迎使用 Powershell、Perl、VBScript、Windows Batch 脚本等中的任何脚本或命令的解决方案,因为这将设置为最终的 TeamCity 构建步骤来修改创建的 MSI。

谢谢。


您可以使用msiinfo.exe(它是 Windows SDK 的一部分)用于读取/添加/更新 msi 属性。

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\MsiInfo.Exe>msiinfo.exe /?
MsiInfo V 5.0
Copyright (c) Microsoft Corporation. All Rights Reserved

++MsiInfo.exe Command Line Syntax++
MsiInfo.exe {database} --> To Display Summary Info Properties
MsiInfo.exe {database} Options.... --> To Set Summary Info Properties
++MsiInfo.exe Options++
PID_DICTIONARY   - /I {value}
PID_CODEPAGE     - /C {value}
PID_TITLE        - /T {value}
PID_SUBJECT      - /J {value}
PID_AUTHOR       - /A {value}
PID_KEYWORDS     - /K {value}
PID_COMMENTS     - /O {value}
PID_TEMPLATE     - /P {value}
PID_LASTAUTHOR   - /L {value}
PID_REVNUMBER    - /V {value}
PID_EDITTIME     - /E {value}
PID_LASTPRINTED  - /S {value}
PID_CREATE_DTM   - /R {value}
PID_LASTSAVE_DTM - /Q {value}
PID_PAGECOUNT    - /G {value}
PID_WORDCOUNT    - /W {value}
PID_CHARCOUNT    - /H {value}
PID_THUMBNAIL    - NOT SUPPORTED
PID_APPNAME      - /N {value}
PID_SECURITY     - /U {value}
Validate String Pool - [/B] /D  (use /B to display the string pool)
/?               - Displays this help message
/nologo          - Do not display the logo message

例如,您可以按如下方式设置作者和主题属性:

msiinfo.exe my.msi /A "Your name" /J "This is a demo"

请注意,您不能使用msiinfo.exe my.msi /I读取单个属性,因为它将尝试更新属性(有效地清除值)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式更新 MSI 属性 的相关文章

  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • 在 Visual Studio 安装程序中使用 Windows 环境变量作为注册表值

    嘿 我想使用 Windows 环境变量作为注册表项的值 不幸的是我不能简单地写一些像 systemroot system32 MyScreensaver scr 正如您所猜测的 我想将一些注册表值指向我自己的应用程序 例如自动启动和屏幕保护
  • 在 Windows 7 上安装 Visual Studio 2015 社区版

    我尝试在 Windows 7 64 位上安装 Visual Studio 2015 社区版 由于某种原因 安装程序显示 安装被阻止 并显示错误 此版本的 Visual Studio 需要一台装有较新版本 Windows 的计算机 为了完全安
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • 如何使用 WiX 卸载时终止进程

    我正在使用 Wix 创建 msi 安装文件 当我卸载应用程序时 它仍然在工作 并且我可以在任务管理器中看到它 我已经尝试过自定义操作的延迟执行 如 Wix 文档中所述 https wixtoolset org documentation m
  • 将构建参数传递给 .wxs 文件以动态构建 wix 安装程序

    我是一名学生开发人员 我已经为我现在工作的公司构建了几个安装程序 所以我对WIX还是比较熟悉的 我们最近决定拥有一个构建服务器来自动构建我们的解决方案 它构建调试和发布以及混淆 和非混淆 项目 你真的不需要理解这些 您需要了解的是 我有相同
  • 如何使用 Wix 运行 sql 脚本创建数据库

    我在使用 Wix 创建数据库时遇到问题 我能找到的示例 参见下面的链接 都是首先使用 wix 创建数据库并运行创建表 sql 脚本 问题是我需要将 wix 设置为使用 CREATE DATABASE 运行 sql 脚本来创建数据库和表 而不
  • Android 应用程序安装失败:包 com.my.app 在条目 AndroidManifest.xml 处没有证书

    在 Android Studio 中 我生成了带有密钥库等的签名 APK 将 APK 安装到设备上时失败 并显示 无法安装应用程序 并且在 Android Monitor 中我看到以下行 Package com my app has no
  • 生成Mst响应工具

    我正在尝试使用 C 创建一个工具来获取通过单击 msi Windows 安装程序 的对话框生成的属性 我可以通过在 msi 关闭之前读取 property 表来获取最终的 msi 属性 但这包含相当多的不需要的属性 例如目录等 我希望能够做
  • 无法在 Windows 10 上安装 Postgresql

    我第一次尝试在我的 Windows 10 计算机上安装 postgreSQL 安装结束时出现两个错误 1 集群初始化期间发生非致命错误 请检查 C users abc AppData Local Temp 中的安装日志了解详细信息 2 运行
  • WiX 属性引用另一个属性

    我正在尝试为我的应用程序创建多个快捷方式 通过使用在命令行上传递不同的参数Arguments的属性Shortcut http wix sourceforge net manual wix2 wix xsd shortcut htm元素 我希
  • 维克斯。相同版本不同产品代码如何进行重大升级?

    基本上我需要改变这种行为 安装具有相同版本和升级代码的产品 但 不同的产品代码 是允许的 并被 MSI 视为两种产品 我需要将其作为重大升级进行威胁 因此 在 v 1 0 1 旧版本 不同的 ProductCode 上安装 v 1 0 1
  • 对 .NET Windows 安装程序应用程序执行注册表搜索

    我有一个 NET winform 安装程序应用程序 在安装之前 我会进行注册表搜索以检查计算机上是否安装了 MS Access Runtime 搜索目标机器 搜索目标机器的属性 启动条件 启动条件的属性 但是我想避免对路径进行硬编码 例如
  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • 如何从网站的 .NET 安装程序中排除文件夹?

    我们的网站有一个安装程序 效果很好 我在创建安装程序时排除了 web config 和其他一些文件 但是我似乎无法排除文件夹 这可能吗 我已使用 NET 内置 Web 安装项目创建了安装程序 该项目可在新项目对话框中的 Visual Stu
  • CUDA NSight 未随 Windows 8 上的 CUDA 5.0 安装文件一起安装? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 据我所知 Nvidia 网站上没有 Nsight Eclipse 的下载链接 它说它将由 CUDA 5 安装本机安装 但并没有随CUDA安装一起安装
  • 为什么 Python 中的“pip install”会引发语法错误?

    我正在尝试使用 pip 安装软件包 我试着跑pip install从Python shell 但我得到了SyntaxError 为什么我会收到此错误 如何使用 pip 安装软件包 gt gt gt pip install selenium
  • 安装后步骤未成功完成 MySQL Mac OS Sierra

    pyEnv Anants MacBook Pro litibackend anantchandra brew postinstall mysql gt Postinstalling mysql gt usr local Cellar mys
  • WiX - 提交多个属性以推迟自定义操作

    我的 WiX 安装程序在处理延迟 立即自定义操作时遇到问题 请原谅我的英语 我想将用户输入的一些属性交给延迟的自定义操作 我知道我需要立即自定义操作和 CustomActionData 来执行此操作 我就是这样实现的 二进制

随机推荐

  • 如何获取 clojure 嵌套结构中给定键的所有值

    def threads values id t1 u uid 1 members values uid 1 uid 2 messages values id m1 u uid 1 id m2 u uid 2 id t2 u uid 12 m
  • dnu 发布 - System.ArgumentNullException:值不能为 null

    当运行以下命令时dnu publish 我抛出一个 ArgumentNullException 异常 dnu publish C Project MyProject out C a configuration Debug runtime d
  • 部分类中的属性未出现在数据源窗口中!

    实体框架已创建所需的部分类 我可以将这些部分类添加到 数据源 窗口 并且属性将按预期显示 但是 如果我在单独的源文件中扩展任何类 即使在构建和刷新之后 这些属性也不会出现在 数据源 窗口中 跨源文件的分部类中的所有属性在 数据源 窗口中按预
  • 按主机名端口重定向到 docker 容器

    我想设置从一台服务器为多个站点提供服务 1 http www example org gt node js www running on port 50000 2 http files example org gt node js file
  • 如何在Android应用程序中制作自定义日历?

    我必须为 android 2 1 2 3 制作一个内置日历控件的应用程序 我曾尝试搜索内置和外部库来实现此目的 但未能成功 因此现在我决定自己编写日历 我想通过GridView 我该怎么办呢 如果有可用的代码 请在此处生成 这确实非常有帮助
  • 对于最新的 Unicode 字符,我应该使用哪种字体?

    注意 它们并不新鲜 只是 不支持 不知何故 我正在尝试为我的网站上的元素制作简单的控件 类似于简单的 静音 或 不静音 控件 但是 我还没有找到任何能够处理较新的 Unicode 符号的字体 例如扬声器符号 x1F507 to x1F50A
  • 我的自定义分类 url 链接的页面未显示 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 基本上我有 newsletter php 页面 其中显示所有现有的自定义帖子 从这里 我有一个下拉类别列表 您可以按类别过滤自定义帖子
  • 函数后加分号

    为什么有些人在大括号后面加分号有什么具体原因吗 void foo 不是真的 那里的分号没有区别 这可能是一个习惯问题 如果您愿意 您可以在 C 11 中添加任意多个分号 void foo
  • Windows 10 中的 Django 通道安装失败

    这是环境 操作系统 Windows 10 姜戈 2 0rc Python 3 6 点 10 0 0 视觉工作室社区 2017 以及错误消息 running build ext building twisted test raiser ext
  • Android 打开 pdf 不起作用

    一段时间以来我一直在努力让它发挥作用 我在这里看到了有关如何从 Android 打开 pdf 的其他问题 普遍的共识是我下面的代码 我错过了什么吗 try Uri path Uri parse android resource com Te
  • 是否可以增加 CloudFlare 超时?

    是否可以增加 CloudFlare 超时 如果是 怎么办 我的代码需要一段时间才能执行 而且我不打算在未来几天对其进行 Ajax 化 不 CloudFlare 仅提供这种服务企业计划定制 https www cloudflare com e
  • 在Perl中,如何根据绝对位置的条件来计算成功匹配的出现次数

    仅使用onePerl替换或匹配正则表达式语句 如何修改以下代码 我需要修改的值 pattern在下面的代码中 代码将计算在字符串中找到成功匹配的次数 前提是成功匹配的绝对位置满足特定条件 pattern F1 string F1234F12
  • .(点) 访问静态方法

    下面是一个流行的代码 class A public static const string TYPE AEvent const string getType return TYPE 上面的代码可以这样使用 if aInstance getT
  • 使用 POST 方法将参数发送到 url,而不使用表单

    我想使用 POST 方法将参数发布到 URL 但无法使用表单 即使我确实使用了表单 它也必须在没有用户交互的情况下自动发布 这可能吗 我怎样才能做到这一点 Using jQuery post http docs jquery com Aja
  • 不再支持 UITextField -webView

    使用某些文本字段时 我得到以下调试输出 UITextField webView 被调用 新的文本架构不再支持此方法 有人可以解释为什么会出现这种情况吗 我目前正在 iOS 7 上运行 XCode 5 在 iOS 7 之前的以前的 iOS 版
  • VLC 流至 MP4 WEBM 和 Flash

    我正在尝试将视频从 IP 摄像机流式传输到我的 WordPress 网站 我希望我的流可以通过常见设备 Windows Mac Android 和 IOS 访问 目前我正在使用 VLC 进行流式传输 但我只能使用 flash 流 但我想做
  • 使用 LINQ 搜索关键字

    如果我有一个包含标题的文本字段 并且有一个关键字列表 我如何搜索标题并检查标题中的 n 个关键字 因此 如果我的标题是 烘焙鸡肉 培根和韭菜派 并且用户搜索 鸡肉培根萝卜 我想返回上述食谱 本质上我想说的是 如果标题包含 2 个或更多搜索词
  • Vuetify V-Data-Table 页脚添加按钮

    我想在 v data table 页脚中添加一个与此图像类似的按钮 问题是 如果表包含数据 我通常可以添加一个按钮 但是 如果没有数据 则该按钮不会呈现 这是代码
  • Grails 获取子域对象

    我有两个域类 一个是父域类 另一个是子域类 它们之间有一个 hasMany 关系 父类有很多子类 子类属于父类 这是编码示例 class Parent String name static hasMany childs Child stat
  • 以编程方式更新 MSI 属性

    我需要一个解决方案 希望它应该相当简单 更新 MSI 属性 我们有许多在 TFS 2012 中进行源代码控制的 WiX 项目 并且我们生成其相关的 MSI 以便通过 TeamCity 构建配置进行部署 这些配置通常会构建所需的 wixpro