Создание-добавление правил в Брандмауэр и удалении их при деинсталляции программы

Александр85

Новичок
Здравствуйте!
У меня при установке программы, удаляются ранее созданные правила и добавляются новые в Брандмауэр:

Код:
procedure CurStepChanged(CurStep: TSetupStep);
var
  RC: Integer;
  SIn, SOut: String;
begin
  case CurStep of
    ssInstall: begin
      Exec(ExpandConstant('netsh.exe'), 'advfirewall firewall delete rule name="myprog1"','', SW_HIDE, ewWaitUntilTerminated, RC)
      SIn:='advfirewall firewall add rule name="myprog1" dir=in action=block program='+ExpandConstant('"{app}\myprog1.exe"')+' enable=yes'; Exec('netsh',  SIn,'', SW_HIDE, ewWaitUntilTerminated, RC)
      SOut:='advfirewall firewall add rule name="myprog1" dir=out action=block program='+ExpandConstant('"{app}\myprog1.exe"')+' enable=yes'; Exec('netsh', SOut,'', SW_HIDE, ewWaitUntilTerminated, RC)
    end;
  end;
end;

Всё верно в этом коде? Как сделать так, чтобы при установки программы проверялись, ранее созданные правила, от другой установки этой программы или если их вручную создали, например (по ключу реестра, где указан путь, например, если папки установки иная, или по названию файла/папки и т.п.)? Потом эти правила удалялись перезаписывались на новые, а при деинсталляции программы, все правила относящиеся к этом программе удалялись?
 
Последнее редактирование:

HandyMan

Новичок
#define MyAppName "MyAppName"
#define MyAppVersion "1.5"
#define MyFireWallRuleName "MyFireWallRuleName"
#define MyAppExeName "MyProc.exe"

[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={src}\{#MyAppName}

[Run]
; Remove firewall exception
; Need to remove exceptions first when updating
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""{#MyFireWallRuleName}"" "; StatusMsg: "Removing Firewall Exception"; Flags: runhidden

; Add firewall exception
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""{#MyFireWallRuleName}"" dir=in action=block program=""{app}\{#MyAppExeName}"" "; StatusMsg: "Adding Firewall Exception"; Flags: runhidden

[UninstallRun]
; Remove firewall exception affter Uninstall
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""{#MyFireWallRuleName}"" "; StatusMsg: "Removing Firewall Exception"; Flags: runhidden
 
Последнее редактирование:

Александр85

Новичок
#define MyAppName "MyAppName"
#define MyAppVersion "1.5"
#define MyFireWallRulename "MyFireWallRuleName"
#define MyAppExeName "MyProc.exe"

[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={src}\{#MyAppName}

[Run]
; Remove firewall exception
; Need to remove exceptions first when updating
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""{#MyFireWallRuleName}"" "; StatusMsg: "Removing Firewall Exception"; Flags: runhidden

; Add firewall exception
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""{#MyFireWallRuleName}"" dir=in action=block program=""{app}\{#MyAppExeName}"" "; StatusMsg: "Adding Firewall Exception"; Flags: runhidden

[UninstallRun]
; Remove firewall exception affter Uninstall
Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""{#MyFireWallRuleName}"" "; StatusMsg: "Removing Firewall Exception"; Flags: runhidden
Это полный вариант или то, что надо добавить?
 
Сверху