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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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.2.0 [23.09.2014] - Скачать;



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

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

Отправлено: 11:48, 10-03-2014

 

Аватара для Dodakaedr

Ветеран


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

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


saneksanek,
Код: Выделить весь код
[Files]
Source: Dll\b2p.dll; DestDir:{app}; Flags: dontcopy;
Source: Dll\botva2.dll; DestDir:{app}; Flags: dontcopy;
Source: Dll\ISDone.dll; DestDir:{app}; Flags: dontcopy;
Source: InstallFiles\Logo 3.png; DestDir:{app}; Flags: dontcopy;
Проблема в флаге dontcopy что означает не копировать, а при деинсталляции вы те файлы вызываете и получается ошибка так как они отсутствуют.

читать дальше »
Код: Выделить весь код
#include "Mod\botva22.iss"
[Setup]
AppName=Game
AppVerName=Game
DefaultDirName={pf}\Game
OutputDir=.

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[Files]
Source: Dll\b2p.dll; DestDir:{app}; Attribs: hidden system; Flags: ignoreversion;
Source: Dll\botva2.dll; DestDir:{app}; Attribs: hidden system; Flags: ignoreversion;
Source: Dll\ISDone.dll; DestDir:{app}; Attribs: hidden system; Flags: ignoreversion;
Source: InstallFiles\Logo 3.png; DestDir:{app}; Attribs: hidden system; Flags: ignoreversion;

[Code]
var
CreateLogo: Longint;
ResultCode: Integer;

function InitializeSetup:boolean;
begin
   if not FileExists(ExpandConstant('{tmp}\b2p.dll')) then ExtractTemporaryFile('b2p.dll');
   if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
   Result:=True;
end;

procedure LogoLabelOnClick(Sender: TObject);
begin
  ShellExec('open', 'http://krinkels.org/showthread.php?t=901&page=2', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode)
end;

procedure InitializeWizard;
begin
  ExtractTemporaryFile('Logo 3.png')
  CreateLogo:= ImgLoad(WizardForm.handle, ExpandConstant('{tmp}\Logo 3.png'), ScaleX(5), ScaleY(325), ScaleX(170), ScaleY(34), True, True);
  ImgApplyChanges(WizardForm.Handle);

  with TLabel.Create(WizardForm) do begin
    Parent:=WizardForm;
    AutoSize:=False;
    Transparent:= true;
    SetBounds(ScaleX(5), ScaleY(325), ScaleX(170), ScaleY(34));
    OnClick:=@LogoLabelOnClick;
    Cursor:= CrHand;
  end;
end;

procedure DeinitializeSetup();
begin
  gdipShutdown;
end;


function InitializeUninstall: Boolean;
begin
  FileCopy(ExpandConstant('{app}\b2p.dll'), ExpandConstant('{tmp}\b2p.dll'), False);
  FileCopy(ExpandConstant('{app}\botva2.dll'), ExpandConstant('{tmp}\botva2.dll'), False);
  FileCopy(ExpandConstant('{app}\Logo 3.png'), ExpandConstant('{tmp}\Logo 3.png'), False);
  Result := True;
end;

procedure UnLogoLabelOnClick(Sender: TObject);
begin
  ShellExec('open', 'http://krinkels.org/showthread.php?t=901&page=2', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode)
end;

procedure InitializeUninstallProgressForm;
begin
  CreateLogo:= ImgLoad(UninstallProgressForm.Handle, ExpandConstant('{tmp}\Logo 3.png'), ScaleX(5), ScaleY(325), ScaleX(170), ScaleY(34), True, True);
  ImgApplyChanges(UninstallProgressForm.Handle);

  with TLabel.Create(nil) do
  begin
    Parent:=UninstallProgressForm;
    AutoSize:=False;
    Transparent:= true;
    SetBounds(ScaleX(5), ScaleY(325), ScaleX(170), ScaleY(34));
    OnClick:=@UnLogoLabelOnClick;
    Cursor:= CrHand;
  end;
end;

procedure DeinitializeUninstall();
begin
  gdipShutdown;
end;

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 31-08-2014 в 20:12.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:57, 31-08-2014 | #1451



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

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


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


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

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


Dodakaedr, Точно,спасибо.

Отправлено: 20:19, 31-08-2014 | #1452


Аватара для Tco 03

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


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

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


Здравствуйте, господа.
Кому не сложно, подскажите, пожалуйста. Застрял на реализации следующей вещи:
SetIniString('Client', 'Size', GetIniString('Client', 'Size', '', ExpandConstant('{tmp}\Info.ini')), ExpandConstant('{app}\Info.ini'));
Нужно с двух разных файлов (с разных секций (из папки {tmp})) вписать в один файл (в одну секцию (в папку {app})) размер файла. То есть, в первом файле, допустим, размер 1287 байт, а в другом 2154 байта. Как их приплюсовать в одну секцию? То есть, чтобы в файле в папке {app} размер был 3441 байт, но только в одной секции?
Спасибо за внимание.

Отправлено: 02:41, 02-09-2014 | #1453


Аватара для nik1967

Старожил


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

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


Tco 03,
ну как то так
Код: Выделить весь код
SetIniString('Client', 'Size', IntToStr(StrToInt(GetIniString('Client', 'Size', '', ExpandConstant('{tmp}\Info1.ini'))) + StrToInt(GetIniString('Client', 'Size', '', ExpandConstant('{tmp}\Info2.ini')))), ExpandConstant('{app}\Info.ini'));

ну или так, чтобы не загромождать строчку :)
Код: Выделить весь код
[code]
[процедура или функция, где все происходит]
var
  S,S1,S2: String;
begin
  S1:= GetIniString('Client', 'Size', '', ExpandConstant('{tmp}\Info1.ini')); // получаем 1 значение
  S2:= GetIniString('Client', 'Size', '', ExpandConstant('{tmp}\Info2.ini')); // получаем 2 значение
  S:= IntToStr(StrToInt(S1) + StrToInt(S2)); // переводим 1 и 2 значение в цифру, суммируем их, переводим сумму снова в строчку
  SetIniString('Client', 'Size', S, ExpandConstant('{app}\Info.ini')); // записываем результат в .ini файл
end;

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 02-09-2014 в 12:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:55, 02-09-2014 | #1454


Аватара для Tco 03

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


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

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


nik1967, работает как Швейцарские часы, благодарю!

Есть ещё одна проблема, господа. Как вписать значение в реестр через секцию Code? Знаю как вписать просто значение, цыфры:
RegWriteDWordValue(HKLM, 'SOFTWARE\Sapatcom\Client Interface, 'Skin', 3);
Как вписать цифры такого формата: 1.0.1.2 (то есть вписать цифры с точками)? И как вписать в реестр просто слово? И ещё... Как потом одно из значений реестра вписать в .ini-файл?

Отправлено: 18:47, 02-09-2014 | #1455


Аватара для nik1967

Старожил


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

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


Цитата Tco 03:
RegWriteDWordValue »
А ты точно уверен, что ключ реестра должен быть DWord? Может быть String (строковый параметр)?
Тогда так:
Код: Выделить весь код
RegWriteStringValue(HKLM, 'SOFTWARE\Sapatcom\Client Interface', 'Skin', '1.0.1.2');
Цитата Tco 03:
И как вписать в реестр просто слово? »
Так же.
Цитата Tco 03:
И ещё... Как потом одно из значений реестра вписать в .ini-файл? »
Получаешь значение с помощью функции RegGetValueNames, затем записываешь значение в .ini файл.

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:41, 02-09-2014 | #1456


Аватара для Dodakaedr

Ветеран


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

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


Подскажите пожалуйста, кто понимает, как можно осуществить вот такое:
Код: Выделить весь код
AfterInstall: "DoServiceInstall('{app}\DfSdkS.exe', 'DfSdkS', 'Defragmentation-Service', 'Defrag Service - powered by mst software')";
а именно DoServiceInstall.

{app}\DfSdkS.exe - программа
DfSdkS - я так понимаю что это ключ
Defragmentation-Service - имя
Defrag Service - powered by mst software - описание

-------
Inno Setup 5 Ultra Unicode


Отправлено: 14:02, 03-09-2014 | #1457


Аватара для kotyarko@fb

Старожил


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

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


Всем привет!
Не подскажете, можно-ли привязать PopupMenu к одному из чекбоксов в ComponentsList? (чекбоксы созданы стандартно, через [Components]).

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 16:25, 03-09-2014 | #1458


Аватара для kotyarko@fb

Старожил


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

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


Цитата Dodakaedr:
Подскажите пожалуйста, кто понимает, как можно осуществить вот такое »
Код: Выделить весь код
AfterInstall: DoServiceInstall;

[Сode]
Procedure DoServiceInstall();
begin
 ShellExec(параметры функции посмотри в справке);
end;
Не знаю, это ли тебе нужно. Но параметры запуска программы указать можно (вряд ли можно указать ключ к ней).

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 16:44, 03-09-2014 | #1459


Аватара для Dodakaedr

Ветеран


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

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


Цитата kotyarko@fb:
Не знаю, это ли тебе нужно. Но параметры запуска программы указать можно (вряд ли можно указать ключ к ней). »
ключ тоже можно. Нет не это. Я думаю что надо что-то типа такого:
Код: Выделить весь код
procedure DoServiceInstall(параметры);
begin
 //Код процедуры;
end;
В программировании не очень, поэтому не могу придумать.

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 03-09-2014 в 17:59.


Отправлено: 17:14, 03-09-2014 | #1460



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход