将 REINSTALLMODE 传递到 MSI 文件

2023-11-23

我正在使用 VisualStudio2005 和 vdproj 创建一个简单的 MSI 文件。当我启动它时,我需要传入 REINSTALLMODE 属性。

我知道这可以通过命令行完成,如下所示:msiexec.exe /i foo.msi REINSTALLMODE=amus

但是,如果用户选择直接单击 msi(启动向导),则不会传递该属性。是否可以通过 VS 和 vdproj 来做到这一点?

我研究过的一些选项:

  • 当我通过 VS 构建 MSI 时,它还会生成一个 setup.exe。有没有办法通过这个传递 REINSTALLMODE 属性?
  • 我安装了 Orca,它允许我查看/编辑 MSI 的属性表。我可以通过这种方式添加它,但是每次进行 MSI 构建时我都必须添加它。

感谢您的任何建议。


我找到了一种更自动化的方法来做到这一点。

创建一个名为add_reinstall_prop.vbs(示例)具有以下内容:

set objArgs = WScript.Arguments
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase(objArgs(0), 1)
s_SQL = "INSERT INTO Property (Property, Value) Values( 'REINSTALLMODE', 'amus')"
set o_MSIView = o_DataBase.OpenView( s_SQL)
o_MSIView.Execute
o_DataBase.Commit

将构建后事件添加到您的安装项目中,使用以下命令调用脚本:

add_reinstall_prop.vbs $(BuiltOuputPath)

这会自动将所需的条目添加到构建的 MSI 中。 然后,您可以使用 Orca 检查它,以查看该条目现在在构建后自动添加。

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

将 REINSTALLMODE 传递到 MSI 文件 的相关文章

随机推荐

  • 当属性达到目的时,标记接口需要什么?

    我有点困惑 标记接口 Vs 的目的 属性 他们的目的在我看来是一样的 如果我错了 请原谅我 谁能解释一下它们的目的有何不同 以下是两者的一些优点 标记接口 使用动态类型检查更容易检查 对象是 IMarker 允许未来的功能和数据可扩展性 即
  • Logback 中的条件功能如何工作?

    我使用这个 logback 配置文件
  • div 末尾的淡入文本?

    是否可以使用 CSS 在 div 末尾附近水平淡入文本 例如这样 CSS 渐变和rgba会做这个工作 Demo 扩展文本版本 更新 div position relative display inline block div span di
  • 如何处理AsyncTask失败

    有没有特定的方法来处理 AsyncTask 中的失败 据我所知 唯一的方法是使用任务的返回值 如果可能的话 我希望能够提供有关失败的更多详细信息 并且 null 并不是很冗长 理想情况下 它会提供一个 onError 处理程序 但我认为它没
  • 从 double 中删除尾随零

    我想删除所有尾随零 而不截断或舍入数字 如果没有 例如 该数字可能类似于12 0 在这种情况下 应删除尾随零 但这个数字也可能是某种东西almost非理性的 比如12 9845927346958762 一直到屏幕边缘 有没有办法设置 Dec
  • IPython 4 shell 不适用于 Sublime REPL

    我在从 Sublime REPL 包运行 IPython shell 时遇到问题 这是我得到的 C Anaconda lib site packages IPython config py 13 ShimWarning The IPytho
  • MVC2:无法使用 TextBoxFor 更改名称?

    我想手动定义文本框的 id 和名称 如下所示 但只改变了id 没有改变name属性 为什么呢
  • 如何在Jquery中将delay()与show()和hide()一起使用

    我该如何使用delay with show and hide 在 Jquery 中 Pass a duration to show and hide 当提供持续时间时 show 成为一种动画方法 E g element delay 1000
  • 从 asp.net web api post 操作重定向

    我对 ASP NET 4 0 Web API 非常陌生 我们可以在 POST 操作结束时重定向到另一个 URL 吗 例如 Response Redirect url 实际上我从 MVC 应用程序上传文件 比如说www abcmvc com
  • 在 Windows 网络中启动远程进程

    我有几台从机和一台主机 它们一起运行分布式应用程序 每台从属机器上的进程都必须具有 GUI 和网络访问权限 我认为这将被称为交互式进程 为了便于使用 如果主机可以启动 停止这些从机上的进程 那就太好了 我的第一个想法是使用 WMI 和 Wi
  • Jenkins 和 Git - 如何获取提交者的名字?

    我正在尝试将更多 GIT 提交信息放入 HipChat 房间 我看到有很多 GIT 变量可以在 jenkins 中使用 我正在执行作业的执行外壳步骤 这些工作 echo GIT BRANCH echo GIT URL echo GIT CO
  • 获取接收者的意图过滤器

    我正在尝试获取处理的接收者列表android intent action BOOT COMPLETED用于其他应用程序 我只能通过以下方式获取具有该操作的应用程序 final PackageManager pm getPackageMana
  • 从 strtok() 获取零长度字符串

    我有一个 CSV 文件 其中包含以下数据 value name test etc 我试图通过使用来分割strtok string 但是 该文件可以包含零长度数据 如下所示 value test etc which strtok 跳过 有什么
  • 如何在reactjs中的map函数内部进行映射

    我有我的表格视图 而且我有正在完善显示的 posfields 使用映射函数 但我的问题是 当我尝试在 posfields 映射函数内映射 td 时 它会抛出错误 headers of undefined this POSFields map
  • 如何在ssl中激活mq

    我正在尝试通过 jms activemq 发送消息 但我希望它采用 ssl 协议 目前它实际上可以在 tcp 中运行 我使用 jndi 带有一个虚拟主题和 2 个队列 有人可以帮助我吗 我尝试了这个 但我卡住了 服务器无法启动 http a
  • safari/chrome onsubmit="location.reload(true)" 不起作用

    我网站上的表单在 Safari Chrome 中无法正常运行 当用户提交表单时 它会打开一个新选项卡 但我希望重新加载原始页面 带有表单的页面 它适用于 IE Opera 和 Firefox 代码
  • 如何刷新 UITableViewController 或 NSFetchedResultsController?

    我的 UITableViewController 或 NSFetchedResultsController 有一点问题 我不确定问题出在哪里 但我猜是 UITableViewController 正如我所说 我使用 NSFetchedRes
  • 从内存中打开?

    我正在寻找一种直接从内存加载生成的目标代码的方法 我知道 如果我将其写入文件 我可以调用 dlopen 来动态加载其符号并链接它们 然而 考虑到它从内存中开始 写入磁盘 然后由 dlopen 重新加载到内存中 这似乎有点迂回 我想知道是否有
  • Android Studio - 无法应用插件 [id 'com.android.application']

    我正在开发一个应用程序 在我的应用程序中 代码中没有错误 但是当我尝试运行我的项目时 它给出了以下错误 错误 1 1 评估项目 app 时出现问题 无法应用插件 id com android application 无法创建 AppPlug
  • 将 REINSTALLMODE 传递到 MSI 文件

    我正在使用 VisualStudio2005 和 vdproj 创建一个简单的 MSI 文件 当我启动它时 我需要传入 REINSTALLMODE 属性 我知道这可以通过命令行完成 如下所示 msiexec exe i foo msi RE