【问题标题】:How to pre-set MSI SecureCustomProperties that are not defined in Properties to allow silent installation?如何预先设置属性中未定义的 MSI SecureCustomProperties 以允许静默安装?
【发布时间】:2018-08-25 19:18:01
【问题描述】:

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

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

但是,每个单独的参数在属性中没有对应的键。 如何预先设置这些?

根据How to make better use of MSI files

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

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

示例:

SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4

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

【问题讨论】:

    标签: windows-installer installshield msitransform msitools


    【解决方案1】:

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

    1. 从命令提示符运行此命令(启动 administrative installation - 也许):

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

    3. 获取 MSI 并使用 Orca 打开它并生成如下所述的转换 - 在 Property table 中设置 SecureCustomProperties

    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"
      

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


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

    Setup.exe vs MSI:您可以尝试使用静默安装命令直接部署 setup.exe,也可以尝试从setup.exe 中提取嵌入式 MSI 文件及其先决条件并单独部署它们。部署通常不需要先决条件 - 例如 .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 installersInstallscript MSIBasic MSI(都来自 Installshield)和其他供应商还存在各种其他可能性。它们甚至可以是Installshield Suite projects - 再次具有完全不同的命令行。这些是可以按顺序安装任意数量的 EXE 和 MSI 文件的安装程序。前几天我就如何提取文件和/或静默安装的主题写了一个类似的答案:Create MSI from extracted setup files - 请略读该答案。它侧重于提取文件,但也描述了使用 setup.exe 进行静默安装。

    在尝试其他任何事情之前,先试试这个:

     setup.exe /a
    

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


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

    基本 MSI

    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 部署工具中创建转换。 Free ToolsMain Tools(免费和商业)。在 Orca 中打开 MSI,然后转到 Transforms => New Transform。然后,您更改需要更改的内容 - 在您的情况下是属性表和 SecureCustomProperties。准备好后:Transforms => Generate Transform... 现在保存转换。


    Installshield 帮助文件

    Installshield 帮助文件中有几个相关部分。 如果您需要对安装参数进行更多调整,请研究这些内容。所有开关都记录在这里 - 这些链接用于 2018 年版 Installshield:

    【讨论】:

    • 谢谢;您的回答提供了很多有用的背景知识并解决了我遇到的其他一些问题,但它并没有帮助我解决属性中缺少行的具体问题。
    • 正如答案中所暗示的,这是使用 Orca 在 MSI 中添加或更改行并保存为转换来完成的。
    【解决方案2】:

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

    示例:

    SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4
    

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

    解决方案:

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

    然后按照其他地方的说明生成并使用生成的 MSI 转换。

    【讨论】:

    • 是的,我想我应该把它拼出来。提示:如果您的公司中有一个“应用程序打包”团队,他们可能会在您工作时弹出这些实用细节来帮助您。大多数大公司都有这样的团队,但可能是离岸的。
    • 我们是一所相对较小的大学,拥有 7 人 IT 部门。所以我们必须自己弄清楚。 :-)
    • SecureCustomProperties 中提到的某些命令行参数是否无关紧要?一些参数已记录在案,不在 SecureCustomProperties 中,可以通过向 Property 添加一行来设置。
    • 一般情况下,您需要通过命令行设置的任何内容都必须存在于SecureCustomProperties 列表中,但实际上可能不需要在属性表中明确定义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2010-11-05
    • 2013-03-01
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多