Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Vladimir_02

Пользователь


Сообщения: 90
Благодарности: 31

Профиль | Отправить PM | Цитировать


Может кому пригодится. Добавление своих строк в файл hosts и удаление их при деинсталляции

Код: Выделить весь код
procedure AddLineToFile(FileName, Line: String);
var
  Lines: TStringList;
begin
  // Создаем объект TStringList для чтения файла в память
  Lines := TStringList.Create;
  try
    // Загружаем содержимое файла в TStringList
    Lines.LoadFromFile(FileName);

    // Проверяем, существует ли строка в файле
    if Lines.IndexOf(Line) = -1 then
    begin
      // Если строка не существует, добавляем ее в конец списка
      Lines.Add(Line);

      // Сохраняем изменения обратно в файл
      Lines.SaveToFile(FileName);
    end;
  finally
    // Освобождаем память, занятую объектом TStringList
    Lines.Free;
  end;
end;
          
procedure RemoveLineFromFile(FileName, Line: String);
var
  Lines: TStringList;
begin
  // Создаем объект TStringList для чтения файла в память
  Lines := TStringList.Create;
  try
    // Загружаем содержимое файла в TStringList
    Lines.LoadFromFile(FileName);

    // Ищем индекс строки, которую хотим удалить
    // Если строка найдена, удаляем ее из списка
    while Lines.IndexOf(Line) <> -1 do
      Lines.Delete(Lines.IndexOf(Line));

    // Сохраняем изменения обратно в файл
    Lines.SaveToFile(FileName);
  finally
    // Освобождаем память, занятую объектом TStringList
    Lines.Free;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  HostsFilePath: String;
  LineToAdd1, LineToAdd2, LineToAdd3, LineToAdd4: String;
begin
  // Получаем путь к файлу hosts в системе
  HostsFilePath := ExpandConstant('{sys}\drivers\etc\hosts');
  // Строка, которую мы хотим добавить в файл hosts (для отключение рекламы)
  LineToAdd1 := '127.0.0.1 player.kmpmedia.net';
  LineToAdd2 := '127.0.0.1 log.kmplayer.com';
  LineToAdd3 := '127.0.0.1 cdn.kmplayer.com';
  LineToAdd4 := '127.0.0.1 cdn.pandora.tv';

  // Проверяем, что текущий шаг установки ssPostInstall
  // Это гарантирует, что файл hosts существует до того, как мы попытаемся его изменить
  if CurStep = ssPostInstall then
   begin
    // Проверяем существование файла
    if not FileExists(HostsFilePath) then
    begin
      // Файл не существует, создаем его
      //MsgBox('File not exists!', mbInformation, MB_OK);
      if SaveStringToFile(HostsFilePath, '', False) then
      begin
        // Файл создан успешно, добавляем строку (если такой строки еще нет)
      AddLineToFile(HostsFilePath, LineToAdd1);
      AddLineToFile(HostsFilePath, LineToAdd2);
      AddLineToFile(HostsFilePath, LineToAdd3);
      AddLineToFile(HostsFilePath, LineToAdd4);
      end;
    end
    else
    begin
      // Файл существует, добавляем строку (если такой строки еще нет)
    //MsgBox('File exists!', mbInformation, MB_OK);
    AddLineToFile(HostsFilePath, LineToAdd1);
    AddLineToFile(HostsFilePath, LineToAdd2);
    AddLineToFile(HostsFilePath, LineToAdd3);
    AddLineToFile(HostsFilePath, LineToAdd4);
    end;
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  HostsFilePath: String;
  LineToRemove1, LineToRemove2, LineToRemove3, LineToRemove4: String;
begin
  // Получаем путь к файлу hosts в системе
  HostsFilePath := ExpandConstant('{sys}\drivers\etc\hosts');

  // Строка, которую мы хотим удалить из файла hosts
  LineToRemove1 := '127.0.0.1 player.kmpmedia.net';
  LineToRemove2 := '127.0.0.1 log.kmplayer.com';
  LineToRemove3 := '127.0.0.1 cdn.kmplayer.com';
  LineToRemove4 := '127.0.0.1 cdn.pandora.tv';

  // Проверяем текущий шаг деинсталляции
  if CurUninstallStep = usPostUninstall then
  begin
      // Проверяем существование файла
    if not FileExists(HostsFilePath) then
    begin
      // Файл не существует, ничего не делаем
      //MsgBox('File not exists!', mbInformation, MB_OK);
    end
    else
    begin
    // Файл существует. Удаляем строку из файла hosts при деинсталляции
    RemoveLineFromFile(HostsFilePath, LineToRemove1);
    RemoveLineFromFile(HostsFilePath, LineToRemove2);
    RemoveLineFromFile(HostsFilePath, LineToRemove3);
    RemoveLineFromFile(HostsFilePath, LineToRemove4);
    end;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:05, 30-07-2023 | #1043