Windows 使用Inno安装程序运行静默安装时输入序列号?

Windows 使用Inno安装程序运行静默安装时输入序列号?,windows,inno-setup,Windows,Inno Setup,在运行带有标志的(Innosetup)产品安装程序时,是否有任何方法允许用户输入产品的序列号?/SP-/SILENT/suppressMsgBox?您可以创建新的命令行参数并在其中传递序列号 /串行=12345679 如果缺少此参数,则不允许继续(显示错误/正确用法或只是终止安装)。要展开: 您可以使用/SERIAL=命令行参数,但InnoSetup不支持将此作为其一个参数,因此您必须执行一些Pascal脚本。像下面这样的方法应该可以奏效 检查commandlineserial()的过程; 变量

在运行带有标志的(Innosetup)产品安装程序时,是否有任何方法允许用户输入产品的序列号?/SP-/SILENT/suppressMsgBox?

您可以创建新的命令行参数并在其中传递序列号

/串行=12345679

如果缺少此参数,则不允许继续(显示错误/正确用法或只是终止安装)。

要展开:

您可以使用
/SERIAL=
命令行参数,但InnoSetup不支持将此作为其一个参数,因此您必须执行一些Pascal脚本。像下面这样的方法应该可以奏效

检查commandlineserial()的过程;
变量
i:整数;
开始
对于i:=1的参数
开始
如果(Pos('/serial=',小写(ParamStr(i))=1)和(Length(ParamStr(i))>8),则
开始
WizardForm.UserInfoSerialEdit.Text:=Copy(ParamStr(i),9,Length(ParamStr(i))-8;
出口
结束
结束;
结束;

您可以从您的.

调用此函数,如果有人已经编译了使用
UserInfoSerial
的安装程序,该怎么办?我认为可以先检查注册表,然后使用注册表值而不是/SERIAL。@Tlama-谢谢;我没有意识到这个功能是可用的。在我的例子中,Pascal脚本有两个优点:(1)我已经在使用Pascal脚本来设置默认序列号,这样就可以集成了。(2)
DefaultUserInfoSerial={param}
意味着如果启用并存在
UsePreviousUserInfo
则忽略命令行,这可能是不可取的。