Chocolatey软件包创建:如何选择用于无提示安装的语言

问题描述

chocolatey创建软件包时,安装失败,因为安装程序要求选择语言: Window asking for the user's language for installation

因此,我尝试按照this page中的说明获取用户的语言(get-culture)并通过调用变量($locale)将其添加到安装参数中:

$ErrorActionPreference = 'Stop';
$toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.DeFinition)"
$locale = "/L=" + (Get-Culture).LCID


$packageArgs = @{
  packageName   = 'PNAME'
  unzipLocation = $toolsDir
  file           = "PNAME32bit.exe"
  file64         = "PNAME64bit.exe"
  fileType      = 'EXE'
  silentArgs     = '/S $locale'
  softwareName  = 'PNAME*'
  validExitCodes= @(0)
}

Install-ChocolateyInstallPackage @packageArgs
Remove-Item $toolsDir\*.exe -ea 0 -force

不幸的是,没有任何变化,该窗口仍然出现。

因此,我的问题是:如何在安装过程中指定用户的语言,以便安装程序将其考虑在内?

提前感谢您的帮助!

解决方法

如果安装程序不允许您在安装时指定语言,则有两种选择:

  1. 使用诸如AutoHotkey之类的工具自动执行该语言的点击(有关此示例,请参见Veracrypt程序包);
  2. 将安装程序包装到MSI中,然后可以自动选择语言(您可能必须为每种语言创建一个MSI);

第一个比较简单,但是可能有点混乱(Autohotkey将在后台运行,检测窗口,单击正确的语言等)。当您必须开始“单击”正确的语言时,它也可能变得混乱。第二种方法是首选方法,因为它不那么混乱,但需要一些时间来与安装程序一起使用。

当然,理想的解决方案是找到正确的参数以传递给安装程序,或者让供应商添加此类参数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...