Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Ответить
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 9]

Аватара для El Sanchez

Ветеран


Contributor


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


Конфигурация

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


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

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


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

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


Здравствуйте!
Подскажите, пожалуйста, код как можно реализовать случайное копирование определенного файла, при каждом новом запуске инсталлятора, Условно говоря у меня есть файл 1.txt, таких файлов будет 10-20-30.
Можно ли сделать так, чтобы при каждом новом запуске-установке чтобы копировался один из этих файлов в папку установки, вне зависимости ни от чего. Просто новая установка - копирование нового файла. Или же запись в этот файл определенного значения из списка который я укажу.
Суть - нужно просто чтобы информация в файле при каждой новой установке менялась или случайно или, пускай даже подряд. Первая установка - первое значение (файл), вторая установка - второй файл (значение).
Это вообще реально сделать?
Никаких задач (компонентов) для выбора пользователю не нужно, а то так бы да, я бы мог предложить пользователю выбрать один их этих файлов. )) Нет, так не надо! Надо чтобы совершенно без участия пользователя, чтобы копировался один и тот же файл в папку установки, но с разным значением или один любой из 10-20-30 файлов, которые я положу отдельно, но имя у них при копировании в папку установки должно быть одно и тоже, т.е. у меня будет 1-2-3-4-5-6-7... txt, где-то лежать до компиляции, а в конечном итоге в папке назначения (установки) должен скопироваться любой из этих файлов, но получить название 1.txt
Помогите, пожалуйста! Желательно для Юникод версии Inno Setup!

Последний раз редактировалось TROY Diamond, 29-03-2023 в 02:14.


Отправлено: 02:07, 29-03-2023 | #1041



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата TROY Diamond:
Надо чтобы совершенно без участия пользователя, чтобы копировался один и тот же файл в папку установки, но с разным значением »
Код: Выделить весь код
[Files]
Source: "1.txt"; DestDir: {app}; Flags: ignoreversion; AfterInstall: WriteRandomFile

[Code]
procedure WriteRandomFile;
begin
  SaveStringToFile(ExpandConstant(CurrentFileName), GetMD5OfString(ExpandConstant('{tmp}')), False);
end;

Отправлено: 09:34, 30-03-2023 | #1042


Аватара для 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


Новый участник


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

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


Изображения
Тип файла: png tempico.png
(13.2 Kb, 16 просмотров)

Подскажите, что нужно сделать, что бы после установки корректно отображалась иконка приложения в установке и удалении программ в Windows? Сейчас это выглядит вот так:

Отправлено: 20:58, 26-08-2023 | #1044


Аватара для Vanadiy777

Ветеран


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

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


mrAndy,
Можно так:
Код: Выделить весь код
[Setup]
UninstallDisplayIcon={app}\MyProg.exe

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...


Отправлено: 22:01, 26-08-2023 | #1045


Новый участник


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

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


Господа. Спасайте .... вообще 0 во всём этом.
В общем, хочу написать функцию, которая проверяет версию dotNet SDK. Параметр Version находится в реестре по пути \HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost
Всё, что удалось сделать, это проверить, что путь \HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x64\ существует, как таковой
[code]
Код: Выделить весь код
function IsDotNetSDKInstalled: Boolean;
var
    dotNetVersion: string;
    reg_key: string; // Просматриваемый подраздел системного реестра
    reg_root: string;
begin
    reg_key := 'SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost';
    reg_root := 'HKEY_LOCAL_MACHINE';
    
  if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost') then
  begin
               ???????????????
  end;
end;
Молю, помогите вытащить значение из реестра

Отправлено: 23:09, 22-09-2023 | #1046


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата PsuchO:
хочу написать функцию, которая проверяет версию dotNet SDK. »
PsuchO,
Код: Выделить весь код
function IsDotNetSDKInstalled: Boolean;
var
  LSubKeyName: string;
begin
  LSubKeyName := 'SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost';
  Result := RegKeyExists(HKLM32, LSubKeyName) and
    RegValueExists(HKLM32, LSubKeyName, 'Version') and
    DirExists(ExpandConstant('{reg:HKLM32\' + LSubKeyName + ',Path|}'));
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:51, 25-09-2023 | #1047


Новый участник


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

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


Приветствую. Хотелось бы выводить на последнем экране время, затраченное на установку. Но что-то не могу найти готового решения. Как это можно сделать, хотя бы в общих чертах?

Отправлено: 09:00, 14-10-2023 | #1048


Аватара для ZVSRus

Старожил


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

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


Цитата EdMSL:
Хотелось бы выводить на последнем экране время, затраченное на установку.
Данный пример есть в справке. ( версия 6.1.2 )

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode


Отправлено: 12:10, 27-10-2023 | #1049


Аватара для ROMKA-1977

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


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

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


Подскажите пож. возможно ли в секции [Tasks] добавить CheckBox для перехода по веб ссылке ?

Отправлено: 19:17, 26-02-2024 | #1050



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход