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

wegi

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


Filename: "{sys}\netsh.exe"; Parameters: "http add urlacl url=http://*:ТУТ ХОЧУ УКАЗЫВАТЬ ПОРТ/ user={%userdomain}\{%username}"; WorkingDir: "{sys}"; Flags: postinstall runascurrentuser;Description: "Добавить правило"
 

InstallationWay

Новичок
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)
 

wegi

Новичок
Подскажи пожалуйста как определить переменную, если я хочу сделать запрос виде строки
 

Хамик

Старожил
Как сделать так чтобы пользователь мог указать свой порт
Код:
[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;
 

wegi

Новичок
Код:
[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;
Не совсем понял этот код:
Можно ли сделать так что бы пользователь мог указывать порт в строку ?
Например как тут?
 

Вложения

  • 5.2 KB Просмотры: 12

Хамик

Старожил
Не совсем понял этот код:
Можно ли сделать так что бы пользователь мог указывать порт в строку ?
Например как тут?
В примере показано как указывать в строке и использовать то что указано в ней. Что именно не понятно?
 
  • Like
Реакции: wegi

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 в кавычки взять.
 

wegi

Новичок
попробуйте так
Код:
[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})
Не помогло
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
@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

Новичок
@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: "Добавить правило"
Огромное спасибо
 
Сверху