问题描述
为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
不幸的是,没有任何变化,该窗口仍然出现。
因此,我的问题是:如何在安装过程中指定用户的语言,以便安装程序将其考虑在内?
提前感谢您的帮助!
解决方法
如果安装程序不允许您在安装时指定语言,则有两种选择:
- 使用诸如AutoHotkey之类的工具自动执行该语言的点击(有关此示例,请参见Veracrypt程序包);
- 将安装程序包装到MSI中,然后可以自动选择语言(您可能必须为每种语言创建一个MSI);
第一个比较简单,但是可能有点混乱(Autohotkey将在后台运行,检测窗口,单击正确的语言等)。当您必须开始“单击”正确的语言时,它也可能变得混乱。第二种方法是首选方法,因为它不那么混乱,但需要一些时间来与安装程序一起使用。
当然,理想的解决方案是找到正确的参数以传递给安装程序,或者让供应商添加此类参数。