Windows installer 如何预先设置未在属性中定义的MSI SecureCustomProperties以允许静默安装?

Windows installer 如何预先设置未在属性中定义的MSI SecureCustomProperties以允许静默安装?,windows-installer,installshield,msitransform,msitools,Windows Installer,Installshield,Msitransform,Msitools,特定供应商的MSI通常通过EXE包装器安装,但我尝试通过GPO使用静默安装进行部署。我正在努力预先设置SecureCustomProperties 供应商记录了可以传递给EXE包装器的大写命令行选项,我假设将它们传递给MSI。使用Orca,我可以看到MSI的属性表包含SecureCustomProperties。该键的值是一个分号分隔的大写列表,包含所有已记录的参数 但是,每个单独的参数都没有相应的键入属性如何预先设置这些设置? 据 您可以找到MSI文件属性表中列出的大多数属性, 但也有可能设置

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

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

但是,每个单独的参数都没有相应的键入属性如何预先设置这些设置?

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

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

例子: DBHEADER不是属性中的键。如何设置DBHEADER的值

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

  • 从命令提示符运行this(开始-可能):

  • 提取到您选择的位置-如果可能(更多关于提取的信息,请参见下文)

  • 抓取MSI并用Orca打开它,并生成如下所述的转换-在
    属性表中设置
    SecureCustomProperties

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

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


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

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

    msiexec.exe /I "C:\Your.msi" /QN /L*V "C:\msilog.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
    
    快速参数解释:


    文件提取:不幸的是,
    setup.exe
    可以是很多东西,从
    传统安装程序
    ,到
    Installscript MSI
    ,再到
    基本MSI
    (都来自Installshield),还有其他供应商提供的各种可能性。它们甚至可以是一个完全不同的命令行。这些安装程序可以按顺序安装任意数量的EXE和MSI文件。前几天我写了一个类似的答案,主题是如何提取文件和/或静默安装:-请浏览一下答案。它着重于提取文件,但也描述了使用
    setup.exe
    进行静默安装

    在尝试其他操作之前,请尝试以下操作:

     setup.exe /a
    
    查看是否得到指定输出位置的提示。如果这样做,则解压缩文件。为了创建转换,您需要提取文件以获取MSI文件


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

    基本MSI

    setup.exe /s /v"TRANSFORMS=\"C:\Transforms\1.mst\""
    
    安装脚本MSI

    setup.exe /s /v"TRANSFORMS=\"C:\Transforms\1.mst\""
    
    • 步骤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=>新的转换。然后,您可以更改需要更改的内容—在您的示例中是属性表和SecureCustomProperties。准备好后:
    Transforms=>Generate Transform…
    现在保存转换


    Installshield帮助文件

    setup.exe /s /v"TRANSFORMS=\"C:\Transforms\1.mst\""
    
    Installshield帮助文件中有几个相关部分。 如果您需要对安装参数进行更多调整,请研究这些参数。此处记录了所有开关-这些链接用于 2018版Installshield:

    • (基本MSI、Installscript MSI)
    • (套房项目)

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

    例子: DBHEADER在属性中不作为键(行)存在,因此无法设置它

    解决方案: 添加键
    setup.exe /r /f1”c:\temp\my-answer-file.iss”
    
    setup.exe /s /f1”c:\temp\my-answer-file.iss” /v"C:\Transforms\1.mst"
    
    SecureCustomProperties: BLAH1;BLAH2;DBHEADER;BLAH4