Проблема Нужна помощь

wegi

Новичок
Всем привет
Делаю свой инсталятор, подскажите, пожалуйста как правильно указывать порт для командной строки netsh
Как сделать так чтобы пользователь мог указать свой порт


Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:ТУТ ХОЧУ УКАЗЫВАТЬ ПОРТ/ user={%userdomain}\{%username}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"
 
you should define a variable and somewhere in the setup pages ask for port number and store it inside the target variable,

then at the end of the installer, you can use "Exec" command like this:

Exec (EXEPATH, 'PARAMETERS HERE', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
 
Подскажи пожалуйста как определить переменную, если я хочу сделать запрос виде строки
 
Как сделать так чтобы пользователь мог указать свой порт
Код:
[Setup]
AppName=My App
AppVersion=1.0
DefaultDirName={pf}\My App

;[Run]
;Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:{code:GetPort}/ user={%userdomain}\{%username}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"

[code]
var
  Label1: TLabel;
  NewEdit1: TNewEdit;

function GetPort(s:string): string;
begin
  Result := NewEdit1.Text;
end;

procedure RedesignWizardForm;
begin
  { Label1 }
  Label1 := TLabel.Create(WizardForm);
  with Label1 do
  begin
    Parent := WizardForm.WelcomePage;
    Caption := 'Port:';
    Left := ScaleX(208);
    Top := ScaleY(232);
    Width := ScaleX(24);
    Height := ScaleY(13);
  end;

  with WizardForm.WelcomeLabel2 do
  begin
    Height := ScaleY(119);
  end;

  { NewEdit1 }
  NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(208);
    Top := ScaleY(248);
    Width := ScaleX(49);
    Height := ScaleY(21);
    Text := '8282';
  end;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
  MsgBox(ExpandConstant('{sys}\netsh.exe http add urlacl url=http://*:')+GetPort('')+'/ user='+ExpandConstant('{%userdomain}\{%username}'), mbInformation, MB_OK);
end;
 
Код:
[Setup]
AppName=My App
AppVersion=1.0
DefaultDirName={pf}\My App

;[Run]
;Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:{code:GetPort}/ user={%userdomain}\{%username}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"

[code]
var
  Label1: TLabel;
  NewEdit1: TNewEdit;

function GetPort(s:string): string;
begin
  Result := NewEdit1.Text;
end;

procedure RedesignWizardForm;
begin
  { Label1 }
  Label1 := TLabel.Create(WizardForm);
  with Label1 do
  begin
    Parent := WizardForm.WelcomePage;
    Caption := 'Port:';
    Left := ScaleX(208);
    Top := ScaleY(232);
    Width := ScaleX(24);
    Height := ScaleY(13);
  end;

  with WizardForm.WelcomeLabel2 do
  begin
    Height := ScaleY(119);
  end;

  { NewEdit1 }
  NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(208);
    Top := ScaleY(248);
    Width := ScaleX(49);
    Height := ScaleY(21);
    Text := '8282';
  end;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
  MsgBox(ExpandConstant('{sys}\netsh.exe http add urlacl url=http://*:')+GetPort('')+'/ user='+ExpandConstant('{%userdomain}\{%username}'), mbInformation, MB_OK);
end;

Не совсем понял этот код:
Можно ли сделать так что бы пользователь мог указывать порт в строку ?
Например как тут?
 

Вложения

  • 21.png
    21.png
    5.2 KB · Просмотры: 17
Не совсем понял этот код:
Можно ли сделать так что бы пользователь мог указывать порт в строку ?
Например как тут?
В примере показано как указывать в строке и использовать то что указано в ней. Что именно не понятно?
 
  • Like
Реакции: wegi
В примере показано как указывать в строке и использовать то что указано в ней. Что именно не понятно?
Огромное спасибо я разобрался, но возник еще один вопрос

При создание netsh(правила) - создается правило вот такое:
http://*:8282/

А хотелось бы чтобы создалось правило

http://*:8282/3342/user

не прописывается(или не отображается) {%userdomain} \{%username}

сама строка
Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:8282/ user={%userdomain}\{%username}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"
 
Последнее редактирование:
не прописывается(или не отображается)
попробуйте так
Код:
[Run]
Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:{code:GetPort}/ user={code:GetUser}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"

[code]
function GetPort(s:string): string;
begin
  Result := NewEdit1.Text;
end;

function GetUser(s:string): string;
begin
  Result :=ExpandConstant('{%userdomain}\{%username}');
end;
или getuser в кавычки взять.
 
попробуйте так
Код:
[Run]
Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:{code:GetPort}/ user={code:GetUser}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"

[code]
function GetPort(s:string): string;
begin
  Result := NewEdit1.Text;
end;

function GetUser(s:string): string;
begin
  Result :=ExpandConstant('{%userdomain}\{%username}');
end;
или getuser в кавычки взять.

Почему-то точно такой результат(не добавилось {%userdomain}\{%username})
Не помогло
 
Последнее редактирование:
@wegi, а вы внимательно читали документацию?
Параметр user=DOMAIN\user не должен добавлять DOMAIN\user к пути url. Он лишь указывать пользователя или группу пользователей, для которых применимо правило.

Ну а если надо чтобы в url были эти значения, то просто добавить в команду
Код:
[Run]
Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:{code:GetPort}/{%userdomain}/{%username} user={code:GetUser}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"
 
  • Like
Реакции: wegi
@wegi, а вы внимательно читали документацию?
Параметр user=DOMAIN\user не должен добавлять DOMAIN\user к пути url. Он лишь указывать пользователя или группу пользователей, для которых применимо правило.

Ну а если надо чтобы в url были эти значения, то просто добавить в команду
Код:
[Run]
Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:{code:GetPort}/{%userdomain}/{%username} user={code:GetUser}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"
Огромное спасибо
 
Назад
Сверху