【问题标题】:Windows silent installation with file parameter带有文件参数的 Windows 静默安装
【发布时间】:2019-03-04 17:42:45
【问题描述】:

我正在尝试通过带有文件参数的 Windows 批处理脚本进行静默安装,但我无法做到。 我有一个文件(params.txt),其中包含在安装过程中应输入的参数(例如路径、选项等)。

Obs.:也可能是 PowerShell。

我在 Linux 中有类似的东西,很简单:

.../installer.sh < .../params.txt

但我正在尝试许多不同的方式,包括 NSIS、MSI。但他们都没有看到用这些参数解决我的问题。 我得到的最接近的是

C:\installer.exe /S

确实使用默认参数进行安装,但我想通过我的文件指定它们。

我已经进行了很多研究,甚至在 stackoverflow 中,但没有解决我的问题。

我的 params.txt 文件内容:

yes
no
C:\Software\MySoftware
yes
no
no
no

安装提示几个问题,文件包含我在安装过程中需要给出的答案。

此外,安装程序是使用 NSISNullsoft Scriptable Install System)生成的。

提前谢谢你。

【问题讨论】:

  • 为什么需要批处理文件?您是否正在执行多个安装程序?您是否在执行不是您编写的安装程序?
  • 这不是批处理问题。您可以通过执行“Installer.exe /?”获得要在命令行上传递的参数列表。如果这没有帮助,您将需要与 Installer.exe 的作者核实,以了解该信息,因为这取决于您的安装程序为参数提供的内容。然后您可能需要执行类似 Installer.exe /S /v"/qb INSTALLDIR=Drive:\DesiredFolder SOMEOTHERPARM=Something NEXTPARM=SomethingElse 等"的操作。您很可能会在命令行而不是文件中传递这些参数
  • 答案会因安装程序的种类而异。这是 MSI、InstallScript 还是其他?
  • @Anders 该脚本将每天自动执行。创建这个的想法是使安装,带有参数,自动和无头。
  • @RGuggisberg 有没有办法使用这个传递参数但没有它们的名称?因为实际上,安装程序只会弹出问题,我想用它作为答案。我在帖子中添加了有关 txt 文件的更多详细信息。

标签: powershell batch-file parameter-passing nsis silent-installer


【解决方案1】:

NSIS 支持/S/D=c:\installpath 参数by default,安装作者必须提供其他支持。

安装作者可以检查特定参数和/或答案文件:

!include FileFunc.nsh
!include LogicLib.nsh

Section

; Command-line parameter:
${GetParameters} $0
ClearErrors
${GetOptions} $0 "/Something" $1
${IfNot} ${Errors}
    ; Do Something
${Else}
    ; Do something else?
${EndIf}

; Answer .INI file:
Var /Global AnswerFile
StrCpy $AnswerFile $ExePath -4
StrCpy $AnswerFile "$AnswerFile.ini"
ReadIniStr $0 $AnswerFile "Options" "OtherPath"
${If} $0 != ""
  File "/oname=$0\file.ext" "c:\mysource\fileForOtherPath.ext"
${EndIf}

SectionEnd

【讨论】:

  • 谢谢@Anders。我真的相信你的回答回答了我的问题,唯一的事情是我们在安装过程中必须有参数的名称。在我的情况下,我没有它,但是一旦你完成了你的脚本工作。
  • GetParameters 为您提供命令行,您可以根据需要解析此字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2011-06-05
  • 2011-04-30
  • 1970-01-01
  • 2019-04-16
  • 2016-06-14
相关资源
最近更新 更多