c# - 高级安装程序,通过命令行使用标志/参数调用我的自定义 MSI?

标签 c# windows-installer advanced-installer

我已经创建了一个自定义的 MSI 包,我正在使用 Advanced Installer 尝试添加某种命令行参数,一个可以触发的 “flag”。当该标志被触发时,它将导致安装程序中发生一系列事件(删除某些文件、移动文件夹、提取 zip 文件...等等...)

换句话说,我从名为 installer.exe 的高级安装程序中生成了 exe

我想从命令行调用 installer.exe --triggerEvents,这将触发安装程序本身内的一系列自定义事件..

经过一番研究后,我发现了一篇与我的问题相关的非常好的文章:

How to Pass Command Line Arguments to MSI Installer Custom Actions

但作者似乎严格专注于 MSI 而不是 Advanced Installer,我更愿意利用我正在使用的这个应用程序。

是否可以通过传递我想要的任何参数来简单地调用安装程序,并使用 session 通过自定义操作获取它?或者有没有一种方法可以用 AI 做到这一点?

最佳答案

您应该能够创建一个 public property在您的 MSI 中使用 AdvancedInstaller(安装参数页面,属性)。请注意,公共(public)属性必须ALL_CAPS,而私有(private)属性可以包含小写字母。

在您的自定义操作中引用公共(public)属性以在运行时检索该属性的值。

从命令行调用 msi 时,您可以像这样设置公共(public)属性的值:

msiexec.exe /i "C:\MyAwesomeApp.msi" AWESOME_PROP="myValue"

根据您的描述,您似乎正在编译您的 MSI into a bootstrapper .我的理解是 Bootstrap exe 将代表您将公共(public)属性的参数传递到 MSI,ala:

C:\MyAwesomeApp.exe /i AWESOME_PROP="myValue"

我发现要使您的自定义操作引用公共(public)属性的内容并按照您希望的方式运行,需要大量的反复试验,但这可能是因为我不是擅长编写 MSI。就我而言,我发现构建小型测试安装程序作为概念证明或多或少有助于我调试我正在尝试做的事情。一旦我做对了,我就将该片段添加到我正在使用的实际 AIP 文件中并在那里进行测试。必要时冲洗并重复!

关于c# - 高级安装程序,通过命令行使用标志/参数调用我的自定义 MSI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570806/

相关文章:

c# - 在登录时生成新的 SessionID (ASP.NET)

wix - 在 WiX 中为每用户或每机器安装上下文设置 ALLUSERS

mysql - 如何在高级安装程序中通过命令行导入mysql数据库

c# - 将 2 个带有内部列表的字典与 Diff 字典进行比较?

c# - 检查值是否为数字且大于 0

c# - 切换变量以供外部使用

WiX:避免显示正在使用的文件对话框,只在安装结束时提示重新启动

c# - 从 C# 中的 msi 文件中获取产品名称

batch-file - 在高级安装程序中自动在 .exe 之前运行 .bat 文件

JAVA -> EXE 包在 Windows Server 2008 中无法运行,为什么?