InnoSetup,如何在向导中打开通过用户提供的端口?

时间:2019-02-08 13:51:10

标签: inno-setup wizard windows-firewall

在innosetup安装程序中,我的目标是配置Windows防火墙以打开适合我的软件的端口

[Run]
Filename: "{sys}\netsh.exe"; Parameters: "firewall set portopening protocol=TCP port=""{code:GetServerPort()}"" name=NxTCP mode=ENABLE"; StatusMsg: "Opening TCP Port ""{code:GetServerPort()}"; Flags: runhidden

[Code]
function GetServerPort(): String;
begin
  Result := "5555"; //obtained with the Wizard
end;

我收到此错误

  

未找到所需的函数或过程'GetServerPort()'。

或者如果我在通话中放下()

  

“ GetServerPort”的原型无效

1 个答案:

答案 0 :(得分:2)

此代码对我有用:

[Run]
Filename: "{sys}\netsh.exe"; Parameters: "firewall set portopening protocol=TCP port=""{code:GetServerPort}"" name=NxTCP mode=ENABLE"; StatusMsg: "Opening TCP Port ""{code:GetServerPort}"; Flags: runhidden


[Code]
function GetServerPort(Value: string): String;
begin
  Result := '5555'; //obtained with the Wizard
end;

您在[Run]中的函数调用格式不正确。 {code:XXX}基本上是一个Check参数,并记录在http://www.jrsoftware.org/ishelp/topic_scriptcheck.htm