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

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

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

Аватара для 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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для Johny777

Ветеран


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

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


скажите пожалуйста как посчитать количество файлов
в папке могут лежать максимум 4 файла. Файлов может быть больше, но инсталл увидит только четыре
мне нужно выполнить действие если "замеченных" файлов больше одного
пока прикинул реализовать так:

iFile1, iFilfe2, iFile3, iFile4: Integer;

if FileExists(S_UPD + '\файл1')) then iFile1 := 1 else iFile1 := 0
if FileExists(S_UPD + '\файл2')) then iFile2 := 1 else iFile2 := 0
if FileExists(S_UPD + '\файл3')) then iFile3 := 1 else iFile3 := 0
if FileExists(S_UPD + '\файл4')) then iFile4 := 1 else iFile4 := 0

if iFile1 + iFilfe2 + iFile3 + iFile4 > 1 then действия

может есть более грамотный способ
я очень мало знаю о .Count
может он?

Отправлено: 02:13, 05-08-2012 | #531



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Johny777, вот так можно:

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*code]
function GetFileCount(dir: string): Integer;
var
  FindFiles: TFindRec;
begin
  Result:= 0;
  if FindFirst(dir+'\*.*', FindFiles) then
  begin
    repeat
      if FindFiles.Attributes and FILE_ATTRIBUTE_DIRECTORY > 0 then Continue;
      Result:= Result+1;
    until not FindNext(FindFiles);
    FindClose(FindFiles);
  end;
end;

procedure InitializeWizard();
begin
  WizardForm.WelcomeLabel1.Caption :=  IntToStr(GetFileCount(ExpandConstant('{pf}\Inno Setup 5')));
end;

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 10:11, 05-08-2012 | #532


Аватара для Johny777

Ветеран


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

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


Gnom_aka_Lexander,
спасибо
сохранил себе пример
пригодится
но мне нужно не все подряд считать а только 4 файла с именами
те файлы
'hl2_update.exe'
'hl2_ep1_update.exe'
'hl2_ep2_update.exe'
'portal_update.exe'
дело в том, что у меня на поиск всех этих 4-х обновлений отведена только
одна кнопка вызывающая форму обзора, через которую можно указать их расположение (оно так и должно быть)
пример: "в папке по умолчанию", те рядом с инсталлом лежат 4 файла, те максимальное количество
я хочу установить 3 из них, а один из другой директории
указываю директорию, но там 2 файла и получается, что они (эти 2 архива.exe) перезаписывают существующие пути заменяя {src}\Outer\update
на например C:\update
скрин-пример

папки с многоточием это путь "не рядом с инсталлом"
без многоточия - рядом
в пути лежат 3 апдейта
рядом 4
в итоге из пути будут взяты 3, а из "рядом с инсталом" только 1



поэтому если файлов в указываемой директории больше одного - 2, 3, 4 то должна вылезти маленькая форма (совсем маленькая) с чекбоксами, через которую
можно подтвердить какие апдейты оттуда брать

Последний раз редактировалось Johny777, 05-08-2012 в 12:14.


Отправлено: 11:54, 05-08-2012 | #533


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Johny777, дык, элементарно добавить условие и все.

читать дальше »
Код: Выделить весь код
; перечисляем файлы через запятую, каждый в своих одинарных кавычках, все вместе - в двойных кавычках.
#define FNames "'hl2_update.exe', 'hl2_ep1_update.exe', 'hl2_ep2_update.exe', 'portal_update.exe'"

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*code]
function GetFileCount(dir : string): Integer;
var
  FindFiles: TFindRec;
begin
  Result:= 0;
  if FindFirst(dir+'\*.*', FindFiles) then
  begin
    repeat
      if FindFiles.Attributes and FILE_ATTRIBUTE_DIRECTORY > 0 then Continue;
      case  ExtractFileName(FindFiles.Name) of
        {#FNames} : Result:= Result+1;
      end;
    until not FindNext(FindFiles);
    FindClose(FindFiles);
  end;
end;

procedure InitializeWizard();
begin
  WizardForm.WelcomeLabel1.Caption :=  IntToStr(GetFileCount(ExpandConstant('{pf}\Inno Setup 5')));
end;


в параметре dir функции GetFileCount указываешь нужную тебе папку, или папку, которую вернула функция выбора папки - не знаю, какую из них ты используешь, но смысл понятен, я думаю. так-же можно перечислять не множеством а по очереди и в зависимости от наличия-отсутствия определенного файла дисаблить-енаблить определенные чекбоксы обновления.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 05-08-2012 в 13:07.

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

Отправлено: 13:01, 05-08-2012 | #534


Аватара для Johny777

Ветеран


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

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


Gnom_aka_Lexander,
спасибо за функцию
понял
Цитата Gnom_aka_Lexander:
или папку, которую вернула функция выбора папки - не знаю, какую из них ты используешь »
функция будет прощупывать ту папку на которую укажет пользователь
она будет обрабатываться в событии OnChage элемента конструктора TFolderTreeView
там же и блокируются/разблокируются чекбоксы таким образом:
var
S_UPD: String;
...
S_UPD := TFolderTreeView(Sender).Directory;
hl2_update_Checkbox.Enabled := FileExists(S_UPD + '\hl2_update.exe');
____________________________
ещё хотел спросить

у меня есть просчёт размера устанавливаемых компонентов
там сложение размера файлов и их размер зависит от наличия гкф файла в пути установки
я хотел сделать это математическое сложения для повышения скорости обработки вставкой кода ассемблера
(ассемблер не знаю, но почитал статью
http://sources.ru/delphi/op/learning...delphi_1.shtml
по дельфи, где есть такой пример)
так и не смог
в инно вылетает ошибка на ключевом слове asm

например
function Count(): Integer;
begin

asm
сложение(рассчёт)
end;

end;

получается инно просто его не поддерживает?

Последний раз редактировалось Johny777, 05-08-2012 в 14:17.


Отправлено: 14:03, 05-08-2012 | #535


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Johny777:
получается инно просто его не поддерживает? »
именно. я нигде в справке не нашел поддержку ассеблерных вствок.
хотя.. компилятор вроде как понимает логическую скобку asm. можно попробовать сделать так:
Код: Выделить весь код
function Count(): Integer;
asm
сложение(рассчёт)
end;
тоесть функция полностью на асме, без паскалевских логических скобок.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 05-08-2012 в 15:35.

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

Отправлено: 15:21, 05-08-2012 | #536


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

Ветеран


Contributor


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

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


Цитата Batistas:
Ну дак что, мне кто-нибудь поможет? »
Batistas, держите, рюшечки сами добавите:
читать дальше »

Код: Выделить весь код
#define MyAppName "Synergetic & MaxiRu DC-P2P Pack"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "-=Batista=-"
#define MyAppURL "http://synergetic-hub.org/"
#define MyAppExeName "ApexDC-s16_4.exe"
#define StartupIcon "Запускать при старте Windows"

[Setup]
AppId={{E20E5BAA-70B0-4EE4-8D27-B1E312B1C083}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=C:\Users\Batista\Desktop\Сборка DC++
OutputBaseFilename=Synergetic & MaxiRu DC-P2P Pack 1.0.0
SetupIconFile=C:\Users\Batista\Desktop\Сборка DC++\ApexDC-s16_4.exe\ApexDC-s16_4.exe\Icon.ico
Compression=lzma2
SolidCompression=yes

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[CustomMessages]
russian.NickNamePageCaption=Информация о пользователе
russian.NickNamePageDescription=Какой ник у Вас в DC++?
russian.NickNamePageSubcaption=Укажите ник и нажмите "Далее"%n%nРекомендуемые символы в нике:%n0123456789%nabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%n()+=[]^_{{})"%nАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя
russian.NickNamePageEditName=Имя пользователя в DC++:
russian.DownloadDirPageCaption=Выбор каталога для загрузки
russian.DownloadDirPageDescription=Где будут храниться загружаемые файлы?
russian.DownloadDirPageSubcaption=Укажите каталог для скачки (при старте он будет автоматически "расшарен")
russian.ShareDirPageCaption=Выбор каталога для общего доступа
russian.ShareDirPageDescription=Где будут храниться файлы для общего доступа?
russian.ShareDirPageSubcaption=Укажите каталог для файлов общего доступа

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; OnlyBelowVersion: 0,6.1
Name: startupicon; Description: {#StartupIcon}; GroupDescription: {cm:AdditionalIcons}

[Files]
Source: "ApexDC-s16_4.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\Batista\Desktop\Сборка DC++\ApexDC-s16_4.exe\ApexDC-s16_4.exe\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs


[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {#MyAppURL}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
Name: {userstartup}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: startupicon

[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifsilent
Filename: {#MyAppURL}; Verb: open; Description: Посетить сайт проекта Synergetic & MaxiRu; Flags: postinstall shellexec skipifsilent

[code]
var
    NickNamePage: TInputQueryWizardPage;
    DownloadDirPage, ShareDirPage: TInputDirWizardPage;
    AboutInfoButton: TButton;
    URLlink: TLabel;

procedure CreateDCPlusPlus(Filename: String);
var
    objXMLDoc: Variant;
begin
    try
        objXMLDoc := CreateOleObject('Microsoft.XMLDOM');
    except
        ShowExceptionMessage;
        Exit;
    end;
    objXMLDoc.async := False;
    objXMLDoc.AppendChild(objXMLDoc.createProcessingInstruction('xml', 'version="1.0" encoding="utf-8" standalone="yes"'));
    objXMLDoc.AppendChild(objXMLDoc.createNode(1, 'DCPlusPlus', ''));

    //settings node
    objXMLDoc.selectSingleNode('DCPlusPlus').AppendChild(objXMLDoc.createNode(1, 'Settings', ''));

    //nick node
    objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'Nick', ''));
    objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/Nick').text := NickNamePage.Values[0];

    //downdir node
    objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'DownloadDirectory', ''));
    objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/DownloadDirectory').text := DownloadDirPage.Values[0];

    //russian xml
    if FileExists(ExpandConstant('{app}\Settings\Russian.xml')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'LanguageFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/LanguageFile').text := 'Russian.xml';
    end;

    //sounds
    if FileExists(ExpandConstant('{app}\Sounds\PrivateMessage.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'BeepFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/BeepFile').text := 'PrivateMessage.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\DownloadBegins.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'BeginFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/BeginFile').text := 'DownloadBegins.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\DownloadFinished.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'FinishedFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/FinishedFile').text := 'DownloadFinished.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\AltSourceAdded.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SourceFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SourceFile').text := 'AltSourceAdded.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\UploadFinished.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'UploadFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/UploadFile').text := 'UploadFinished.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\FakerFound.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'FakerFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/FakerFile').text := 'FakerFound.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\MyNickInMainChat.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'ChatNameFile', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/ChatNameFile').text := 'MyNickInMainChat.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\FileCorrupted.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SoundTTH', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SoundTTH').text := 'FileCorrupted.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\UnhandledException.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SoundException', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SoundException').text := 'UnhandledException.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\HubConnected.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SoundHubConnected', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SoundHubConnected').text := 'HubConnected.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\HubDisconnected.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SoundHubDisconnected', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SoundHubDisconnected').text := 'HubDisconnected.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\FavUser.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SoundFavUserOnline', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SoundFavUserOnline').text := 'FavUser.wav';
    end;

    if FileExists(ExpandConstant('{app}\Sounds\FavUserDisconnected.wav')) then
    begin
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings').AppendChild(objXMLDoc.createNode(1, 'SoundFavUserOffline', ''));
        objXMLDoc.selectSingleNode('//DCPlusPlus/Settings/SoundFavUserOffline').text := 'FavUserDisconnected.wav';
    end;

    //share node
    objXMLDoc.selectSingleNode('DCPlusPlus').AppendChild(objXMLDoc.createNode(1, 'Share', ''));
    objXMLDoc.selectSingleNode('//DCPlusPlus/Share').AppendChild(objXMLDoc.createNode(1, 'Directory', ''));
    objXMLDoc.selectSingleNode('//DCPlusPlus/Share/Directory').setAttribute('Virtual', ExtractFileName(RemoveBackSlash(ShareDirPage.Values[0])));
    objXMLDoc.selectSingleNode('//DCPlusPlus/Share/Directory').text := ShareDirPage.Values[0];

    //prevapps node
    objXMLDoc.selectSingleNode('DCPlusPlus').AppendChild(objXMLDoc.createNode(1, 'PreviewApps', ''));
    objXMLDoc.selectSingleNode('//DCPlusPlus/PreviewApps').AppendChild(objXMLDoc.createNode(1, 'Application', ''));
    objXMLDoc.selectSingleNode('//DCPlusPlus/PreviewApps/Application').setAttribute('Name', 'AVI Preview');
    objXMLDoc.selectSingleNode('//DCPlusPlus/PreviewApps/Application').setAttribute('Application', ExpandConstant('{app}\AVIPreview.exe'));
    objXMLDoc.selectSingleNode('//DCPlusPlus/PreviewApps/Application').setAttribute('Arguments', '%[file]');
    objXMLDoc.selectSingleNode('//DCPlusPlus/PreviewApps/Application').setAttribute('Extension', 'avi;divx;mpg;mpeg;vob');
 
    objXMLDoc.save(Filename);
end;

function ReadDCPlusPlus(Filename, Node, Default: String): String;
var
    objXMLDoc: Variant;
begin
    Result := Default;
    if not FileExists(Filename) then Exit;
    try
        objXMLDoc := CreateOleObject('Microsoft.XMLDOM');
    except
        ShowExceptionMessage;
        Exit;
    end;
    objXMLDoc.load(Filename);
    objXMLDoc.async := False;
    if objXMLDoc.parseError.errorCode <> 0 then Exit;
    Result := objXMLDoc.selectSingleNode(Node).text;
end;

procedure CreateNickNamePage;
begin
    NickNamePage := CreateInputQueryPage(wpSelectTasks, ExpandConstant('{cm:NickNamePageCaption}'), ExpandConstant('{cm:NickNamePageDescription}'), ExpandConstant('{cm:NickNamePageSubcaption}'));
    NickNamePage.Add(ExpandConstant('{cm:NickNamePageEditName}'), False);
    NickNamePage.Values[0] := ReadDCPlusPlus(WizardDirValue + '\Settings\DCPlusPlus.xml', '//DCPlusPlus/Settings/Nick', '');
end;

procedure CreateDownloadDirPage;
begin
    DownloadDirPage := CreateInputDirPage(NickNamePage.ID, ExpandConstant('{cm:DownloadDirPageCaption}'), ExpandConstant('{cm:DownloadDirPageDescription}'), ExpandConstant('{cm:DownloadDirPageSubcaption}'), False, 'Новая папка');
    DownloadDirPage.Add('');
    DownloadDirPage.Values[0] := ReadDCPlusPlus(WizardDirValue + '\Settings\DCPlusPlus.xml', '//DCPlusPlus/Settings/DownloadDirectory', WizardDirValue + '\Settings\Downloads');
end;

procedure CreateShareDirPage;
begin
    ShareDirPage := CreateInputDirPage(DownloadDirPage.ID, ExpandConstant('{cm:ShareDirPageCaption}'), ExpandConstant('{cm:ShareDirPageDescription}'), ExpandConstant('{cm:ShareDirPageSubcaption}'), False, 'Новая папка');
    ShareDirPage.Add('');
    ShareDirPage.Values[0] := ReadDCPlusPlus(WizardDirValue + '\Settings\DCPlusPlus.xml', '//DCPlusPlus/Share/Directory', '');
end;

procedure ControlOnClick(Sender: TObject);
var
    ResultCode: Integer;
begin
    if Sender is TButton then MsgBox('bla-bla-bla', mbInformation, MB_OK);
    if Sender is TLabel then ShellExec('open', '{#MyAppURL}', '', '', SW_SHOW, ewNoWait, ResultCode);
end;

procedure CreateAboutInfoButton;
begin
    AboutInfoButton := TButton.Create(WizardForm);
    with AboutInfoButton do begin
        Parent := WizardForm;
        SetBounds(WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width, WizardForm.CancelButton.Top, WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
        Caption := 'About...';
        OnClick := @ControlOnClick;
    end;
end;

procedure CreateURLlink;
begin
    URLlink := TLabel.Create(WizardForm);
    with URLlink do begin
        Parent := WizardForm;
        Left := 2*AboutInfoButton.Left + AboutInfoButton.Width;
        Top := AboutInfoButton.Top + AboutInfoButton.Height - Height;
        Caption := '{#MyAppURL}';
        Font.Color := clBlue;
        Font.Style := [fsUnderline];
        Cursor := crHand;
        OnClick := @ControlOnClick;
    end;
end;

procedure InitializeWizard();
begin
    CreateNickNamePage;
    CreateDownloadDirPage;
    CreateShareDirPage;
    CreateAboutInfoButton;
    CreateURLlink;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssPostInstall: CreateDCPlusPlus(ExpandConstant('{app}\Settings\DCPlusPlus.xml'));
    end;
end;

Последний раз редактировалось El Sanchez, 07-08-2012 в 13:54. Причина: fix

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

Отправлено: 09:34, 06-08-2012 | #537


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


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

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


Цитата:
Batistas, держите, рюшечки сами добавите
Все бы идеально, если бы не - http://s51.radikal.ru/i132/1208/f8/f20598db3f63.png (ISC 5.5.1 Unicode) и - http://s60.radikal.ru/i169/1208/8a/1e05c2f2ca3a.png (ISS 5.5.1) Система Win 7 x64 SP1

Отправлено: 23:43, 06-08-2012 | #538


Аватара для nik1967

Старожил


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

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


Batistas, может стоит установить расширенную версию от Китайских братьев? ISC 5.5.1. ee1 (u) Система Win 7 x64 SP1

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


Отправлено: 23:56, 06-08-2012 | #539


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


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

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


Цитата:
Batistas, может стоит установить расширенную версию от Китайских братьев? ISC 5.5.1. ee1 (u) Система Win 7 x64 SP1
http://s014.radikal.ru/i329/1208/08/29dbd796a9c2.png Может быть я что не так установил...

Последний раз редактировалось Batistas, 07-08-2012 в 01:56.


Отправлено: 00:47, 07-08-2012 | #540



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход