2

特定供应商的 MSI 通常通过 EXE 包装器安装,但我正在尝试通过 GPO 使用静默安装进行部署。我正在努力预设 SecureCustomProperties。

供应商记录了可以传递给 EXE 包装器的 UPPERCASE 命令行选项,我假设它会将它们传递给 MSI。使用 Orca,我可以看到 MSI 的属性表包含 SecureCustomProperties。该键的值是一个以分号分隔的大写所有记录参数的列表。

但是,每个单独的参数在属性中没有对应的键。我怎样才能预先设置这些?

根据如何更好地利用 MSI 文件

您可以找到 MSI 文件的属性表中列出的大多数属性,但也有可能设置了一些属性表中未定义的属性。在大多数情况下,这与仅从设置 GUI 设置的属性有关(在大多数情况下表示设置设计错误)。所有属性都应在正确编写的包的属性表中定义。

我可以将每个参数添加为属性中的键并添加我的自定义值吗?如果是这样,我应该将参数保留在 SecureCustomProperties 中吗?

例子:

SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4

DBHEADER不是属性中的键。如何设置 DBHEADER 的值?

4

2 回答 2

3

短版:这是您可以先试用的版本。

  1. 从命令提示符运行此命令(启动管理安装- 也许):

    setup.exe /a
    
  2. 提取到您选择的位置 - 如果可能的话(更多关于提取下面)。

  3. 获取MSI并使用Orca打开它并生成如下所述的转换 -SecureCustomPropertiesProperty table

  4. 如果您自己运行 MSI,请尝试使用setup.exe或通过msiexec.exe静默安装(选择以下命令行之一):

    setup.exe /s /v"TRANSFORMS=\"C:\Transforms\1.mst\""
    
    setup.exe /s /f1”c:\temp\my-answer-file.iss” /v"C:\Transforms\1.mst"
    
    msiexec.exe /I "C:\Your.msi" /QN /L*V "C:\msilog.log" TRANSFORMS="C:\My.mst"
    

Basic MSI在第 4 点中,命令行分别是 forInstallscript MSIvanilla, extracted MSI。对于 Installscript MSI,需要一个响应文件。它可能在提取中找到,否则必须生成。见下文。


变换I would use a transform。转换可以更改 MSI 中的“任何内容”,因此也可以轻松设置SecureCustomProperties。本质上,该属性是一种安全措施(限制哪些属性可以从 GUI 序列传递到提升的安装过程),因此我猜他们不希望它可以通过命令行进行设置(我的假设)。

Setup.exe vs MSI:您可以尝试setup.exe使用静默安装命令直接部署,或者您可以尝试从 中提取嵌入式 MSI 文件及其先决条件setup.exe并单独部署。部署通常不需要先决条件 - 例如 .NET 框架。提取的 MSI 也更容易处理,因为它支持标准化命令行,让我展示一个快速示例:

msiexec.exe /I "C:\Your.msi" /QN /L*V "C:\msilog.log" TRANSFORMS="C:\1031.mst;C:\My.mst"

快速参数说明

/I = run install sequence
/QN = run completely silently
/L*V "C:\msilog.log" = verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst (see below).

文件提取:不幸的是,setup.exe可以有很多东西,从legacy installers、到Installscript MSIBasic MSI(都来自 Installshield)以及其他供应商提供的各种其他可能性。它们甚至可以是Installshield Suite projects- 再次具有完全不同的命令行。这些是可以按顺序安装任意数量的 EXE 和 MSI 文件的安装程序。前几天我就如何提取文件和/或静默安装的主题写了一个类似的答案:从提取的安装文件创建 MSI - 请略读该答案。它侧重于提取文件,但也描述了使用setup.exe.

在尝试其他任何事情之前,请尝试以下操作:

 setup.exe /a

查看是否提示您指定输出位置。如果这样做,请提取文件。您需要提取文件以获取 MSI 文件才能创建转换。


建议:如上所述,您可以提取setup.exe或尝试静默运行它。我更喜欢提取,但让我建议一些可能的命令行通过setup.exe. 我不知道你的细节setup.exe,但让我做一些猜测:

基本微星

setup.exe /s /v"TRANSFORMS=\"C:\Transforms\1.mst\""

安装脚本 MSI

  • 第 1 步:记录响应文件:

    setup.exe /r /f1”c:\temp\my-answer-file.iss”
    
  • 第 2 步:基本静默安装(使用响应文件)并应用转换:

    setup.exe /s /f1”c:\temp\my-answer-file.iss” /v"C:\Transforms\1.mst"
    

创建转换:您可以在Orca或任何其他 MSI 部署工具中创建转换。免费工具主要工具(免费和商业)。在Orca你打开一个MSI,然后去Transforms => New Transform。然后,您更改需要更改的内容 - 在您的情况下是属性表和 SecureCustomProperties。准备就绪后:Transforms => Generate Transform...现在保存转换。


Installshield帮助文件

Installshield 帮助文件中有几个相关的部分。 如果您需要更多地调整安装参数,请研究这些。此处记录了所有开关 - 这些链接适用于 2018 版 Installshield:

于 2018-08-26T02:27:03.040 回答
0

通过反复试验,我发现使用 Orca 将缺少的键添加到属性表是有效的。

例子:

SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4

DBHEADER 在 Property 中不作为键(行)存在,所以我们不能设置它。

解决方案:

将带有我想要的值 ( ) 的键 DBHEADER 添加Live到属性表。

使用 Orca 添加行

结果添加了新行

然后生成并使用生成的 MSI 转换,如别处所述。

于 2018-08-27T14:06:32.147 回答