根据Inno Setup中选择的语言创建命令行参数快捷方式

问题描述

我正在尝试在命令行参数中使用条件-我已经使用了本教程,并且效果很好: Creating a shortcut to execute a program with command-line parameters in Inno Setup

我正在创建一个安装程序,我想知道如果用户选择西班牙语,该快捷方式的参数为:-spanish

#define MyAppName "The software"
#define MyAppVersion "1.0"
#define MyAppPublisher "Inc."

[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Files]
Source: "C:\Program Files (x86)\The software\*"; DestDir: "{app}"; \
    Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\Soft name"; Filename: "{app}\soft.exe"; \
    Parameters: "-english"; IconFilename: {app}\icon.ico;

解决方法

使用Languages parameter

T <{ matrix(NA,nrow = MaxK + 1,ncol = 1)
ProbT <{ matrix(NA,ncol = 1)
Star <{ matrix(NA,nrow = M,ncol = B)

或使用scripted constantActiveLanguage function。如果您的language Name和开关名称始终匹配,则非常简单:

[Icons]
Name: "{commondesktop}\Soft name"; Filename: "{app}\soft.exe"; \
    Parameters: "-english"; IconFilename: {app}\icon.ico; Languages: english
Name: "{commondesktop}\Soft name"; Filename: "{app}\soft.exe"; \
    Parameters: "-russian"; IconFilename: {app}\icon.ico; Languages: russian
...

如果它们不匹配,则必须实现代理功能,以将[Icons] Name: "{commondesktop}\Soft name"; Filename: "{app}\soft.exe"; \ Parameters: "-{code:ActiveLanguage}"; IconFilename: {app}\icon.ico 值转换为等效的开关名称。