Может кому пригодится. Добавление своих строк в файл 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;