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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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 | Цитировать


Цитата wertulll:
и лишнего наверное много? »
есть такое
гляну ещё раз спокойно
проверяй форум время от времени (особенно завтра)
========================================
скажите пожалуйста в чём разница между этой функцией
Код: Выделить весь код
function NumToStr(Float: Extended): String;
begin
  Result:= Format('%.1n', [Float]);
  StringChange(Result, ',', '.');
  while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
  SetLength(Result, Length(Result)-1);
end;
и встроенным FloatToStr

Последний раз редактировалось Johny777, 01-08-2012 в 04:42.

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

Отправлено: 02:07, 01-08-2012 | #501



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

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


Аватара для Shegorat

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


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

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


Цитата Johny777:
скажите пожалуйста в чём разница между этой функцией »
NumToStr переводит дробное число в строку, в данном случае с точностью до одного знака после запятой, при этом если дробная часть равна нулю, она ее обрезает. FloatToStr, если не ошибаюсь, переводит число с точностью до 6 знаков после запятой, при этом если младшие разряды дробной части или вся дробная часть равна нулю, она не обрезает нулевые знаки.

-------
Как много дел считались невозможными, пока они не были осуществлены.

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

Отправлено: 10:48, 01-08-2012 | #502


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


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

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


Цитата Johny777:
мне кажется тебе не хватает одной единственной логической переменной »
Вооот, а теперь мы подошли к сути вопроса. Тоесть в любом случае получится 2 набора переменных? Я надеялся что можно как-то спрятать страницы но использовать их(страниц) переменные(текстовые поля)... тогда все бы было значительно красивее и проще...

Отправлено: 11:14, 01-08-2012 | #503


Аватара для Johny777

Ветеран


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

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


wertulll,
переписал всё кроме исдана (его не знаю)
заменил проверку свободного места на свою, (тебе понадобится расширенная версия инно, если пользуешься стандартной)
и у тебя на первой странице картинка от Сталкера и дальше полосой сверху от другой игры

Последний раз редактировалось Johny777, 22-04-2013 в 16:16.

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

Отправлено: 16:36, 01-08-2012 | #504


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


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

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


Ребят, помогите в создании инсталятора для ApexDC++ s16.4. Что нужно уметь делать инсталятору, если так можно выразиться:

читать дальше »
В файле Settings/DCPlusPlus.xml

1)Добавление ника (в меню инсталятора) (Пример: http://s003.radikal.ru/i203/1207/ea/5520e1c639d6.png):

<Nick type="string"></Nick>

2)Прописывание абсолютного пути к файлу русификации (settings/):

<LanguageFile type="string">Russian.xml</LanguageFile>

3)Прописывание абсолютного пути к звукам (Sounds/):

<BeepFile type="string">PrivateMessage.wav</BeepFile>
<BeginFile type="string">DownloadBegins.wav</BeginFile>
<FinishedFile type="string">DownloadFinished.wav</FinishedFile>
<SourceFile type="string">AltSourceAdded.wav</SourceFile>
<UploadFile type="string">UploadFinished.wav</UploadFile>
<FakerFile type="string">FakerFound.wav</FakerFile>
<ChatNameFile type="string">MyNickInMainChat.wav</ChatNameFile>
<SoundTTH type="string">FileCorrupted.wav</SoundTTH>
<SoundException type="string">UnhandledException.wav</SoundException>
<SoundHubConnected type="string">HubConnected.wav</SoundHubConnected>
<SoundHubDisconnected type="string">HubDisconnected.wav</SoundHubDisconnected>
<SoundFavUserOnline type="string">FavUser.wav</SoundFavUserOnline>
<SoundFavUserOffline type="string">FavUserDisconnected.wav</SoundFavUserOffline>

4)Прописывание абсолютного пути к предпросмотрщику:

<PreviewApps>
<Application Name="AVI Preview" Application="AVIPreview.exe" Arguments="%[file]" Extension="avi;divx;mpg;mpeg;vob"/>
</PreviewApps>

5)Выбор папки для шары (в меню инсталятора) (Пример: http://s05.radikal.ru/i178/1207/0c/a131800ecb2e.png):

<Share>
<Directory Virtual="Downloads-P2P"></Directory>
</Share>

6)Выбор директории для скачивания (в меню исталятора) (Пример: http://s05.radikal.ru/i178/1207/0c/a131800ecb2e.png):

<DownloadDirectory type="string"></DownloadDirectory>

7)Добавление ссылки на сайт в инсталляторе и кнопки "Об авторе": http://s05.radikal.ru/i178/1207/63/a6c256b106fe.png

5 и 6 пункты можно объединить в одно окно (не суть важно).

Ссылка на архив: http://narod.ru/disk/58558832001.698..._inno.rar.html

Файл DCPlusPlus.xml - http://narod.ru/disk/58668588001.c1c...sPlus.xml.html


Поможет кто-нибудь в реализации задумки?

Отправлено: 19:54, 01-08-2012 | #505


Аватара для Johny777

Ветеран


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

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


Batistas,
касательно .xml в сообщении El Sanchezhttp://forum.oszone.net/post-1932532-253.html

Юра! Что может быть проще чем проверять значение одой логической переменной?
Хочешь пример?
У меня при нажатии на кнопку создаётся форма с чек боксами задач (8 чек боксов) (форма не модальная. После её показа не идёт команда Free)
при нажатии на кнопку на форме, при нажатии на кнопку основного окна с которой эта форма создалась, при переходе на страницу назад форма прячется
пишется значение тру в переменную "форма спрятана"
при наведении на картинку на странице с кнопкой через которую вызывается форма и рядом лежащий на всю оставшуюся страницу прозрачный лейбл, за который можно хвататься курсором мыши, форма разрушается
пишется false в другую переменную "форма существует"
при новом вызове формы идёт "Есои форма существует - форма.Free. если форма не существует, то создать-создать, в конце форма видимая тру, форма существует тру"
логическая переменная кушает мало(булев переменная = 1 бит), а форма значительно больше. Если её не выгружая вызвать 10 раз, то ничего хорошего
мне неприятно будет своим нсталлом глупо съедать ресурсы чужого компа и своего
Теперь хоть 1000 раз нажми
и ещё
форма, если не закрыта разрушается в начале установки
когда формы нет угадай как реализована передача команд "установить директ икс", "уст. визуал" и пр в конце установки? (чекбоксы слетают вместе с формой. Поэтому никаких "если отмечен, то...")

Цитата Yury_Prizrak:
Я надеялся что можно как-то спрятать страницы но использовать их(страниц) переменные(текстовые поля) »
можно вынести создание страниц в процедуру
читать дальше »
Код: Выделить весь код
var
Installed: boolean;

function InitializeSetup(): Boolean;
begin
  Installed := False;
  проверяем есть ли ключ (код 2 страницы назад)
  если есть Installed := True; и пошло по всему коду
end;

procedure CreateSettingPages;
var
  все переменные которые могоут быть локальными сюда
begin
  создаём страницы и всё, что на них
end;

procedure InitializeWizard;
begin
  if not Installed then CreateSettingPages; - создаём страницы. Короче всё, что должно делаться если не установлена
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if not Installed then тоже самое но для того что ты делаешь в переключении страниц
end;


??????????????????????????????

или пропускать их
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  case PageID of
    стр1.ID, стр2.ID : Result := Installed;
  end;
end:


И всёж советую тебе выбирать самое простое решение
думаю, то что я тебе посоветовал и есть простое решение
писать альтернативный километр кода если установлена или просто не обрабатывать существующий код(настройку из твоего сообщения) если не установлена
что лучше?

Последний раз редактировалось Johny777, 02-08-2012 в 03:27.

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

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


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


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

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


Johny777, там нет того, что мне нужно =(

Отправлено: 20:46, 02-08-2012 | #507


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

Ветеран


Contributor


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

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


Цитата Johny777:
как обновить рабочий стол через код (правда не уверен, что оно так уж нужно)? »
Johny777,
Код: Выделить весь код
[Setup]
ChangesAssociations=yes
Цитата Yury_Prizrak:
И вроде как все хорошо и здорово. Но возникла необходимость не давать пользователю менять эти данные(т.е. прятать страницы DBPage и ZXBPage) если программа уже была установлена. При этом первый вариант тоже должен оставатся(это я уже сообразил как реализовать)ю Но если я прячу страницы тогда я не могу пользоватся переменными этих страниц (ConnectionStringEdit.Text например) т.е. если страница спрятана, в эту переменную не подтягивается значение из файла а ставится по умолчанию. Есть вариант ввести дополнительные внутренние переменные в код InnoSetup и записывать значения в них а после перезаписи конфиг. файла считывать из них: »
Yury_Prizrak, попробуйте не прятать, а пропускать страницы при помощи функции ShouldSkipPage. Ну и все процедуры чтения\записи xml-файлов вынести в одну функцию с принимаемыми параметрами типа файл, нода, имя аттрибута, флаг чтение\запись и строковым результатом.

Цитата Batistas:
там нет того, что мне нужно »
Batistas, тут поищите
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 02-08-2012 | #508


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


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

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


El Sanchez, c кнопкой и ссылкой сам разобрался. Скрипт выглядит теперь примерно так:

читать дальше »

; --- Generated by InnoSetup Script Joiner version 3.0, Jul 22 2009, (c) Bulat Ziganshin <Bulat.Ziganshin@gmail.com>. More info at http://issjoiner.codeplex.com/

; --- Source: кнопка.iss ------------------------------------------------------------
[code]
procedure TestButtonOnClick(Sender: TObject);
begin
MsgBox('© 2012, -=Batista=-', mbInformation, MB_OK)
end;

procedure InitializeWizard1();
var
NewButton1: TNewButton;

begin
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do begin
Left:=11
Top:=328
Width:=81
Height:=22
Cursor:=crHand
OnClick:=@TestButtonOnClick
Parent:=WizardForm
Caption := 'Автор...';
end
end;

[setup]
; --- Source: setup.iss ------------------------------------------------------------
; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!

#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 Startupcion "Запускать при старте Windows"

[Setup]
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
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
AppCopyright=Copyright © 2012 Batista
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[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: quicklaunchicon7; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; MinVersion: 0,6.1
Name: startupicon; Description: {#Startupcion}; GroupDescription: {cm:AdditionalIcons}

[Files]
Source: ApexDC-s16_4.exe; DestDir: "{app}"; Flags: ignoreversion
Source: AVIPreview.exe; DestDir: "{app}"; Flags: ignoreversion
Source: PinToTasckbar.vbs; DestDir: {tmp}; Flags: deleteafterinstall
Source: Synergetic DC++ Community.url; DestDir: "{app}"; Flags: ignoreversion
Source: Новые возможности клиента ApexDC++.txt; DestDir: "{app}"; Flags: ignoreversion
Source: EmoPacks\*; DestDir: {app}\EmoPacks\;
Source: EmoPacks\Images\*;DestDir: {app}\EmoPacks\Images\;
Source: Settings\*; DestDir: {app}\Settings\;
Source: Sounds\*; DestDir: {app}\Sounds\;
Source: Themes\*; DestDir: {app}\Themes\;
Source: Toolbars\*; DestDir: {app}\Toolbars\;
; Примечание: Не используйте "Flags: ignoreversion" для системных файлов

[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: {tmp}\PinToTasckbar.vbs; Parameters: """{app}\ApexDC-s16_4.exe"""; Flags: shellexec; Tasks: quicklaunchicon7
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\Synergetic DC++ Community.url"; Description: "Посетить сайт проекта Synergetic and MaxiRu"; Flags: postinstall shellexec skipifsilent

[code]
var
MouseLabel,SiteLabel: TLabel;

procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://synergetic-hub.org/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;

procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clRed
end;

procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;

procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clGreen
end;

procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;

procedure InitializeWizard2();
begin
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm

SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=97
SiteLabel.Top:=332
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='http://synergetic-hub.org/'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
end;
[Setup]


; --- Dispatching code ------------------------------------------------------------

[code]

procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
end;



А вот остальное нет смысла там даже и искать, ведь у флая есть конфигуратор. Вот тут порылся, так и не понял, как абсолютный путь автоматом прописать -
http://forum.oszone.net/post-1798658-175.html , хотя уже близко. А за ответ спасибо.

Последний раз редактировалось Batistas, 03-08-2012 в 00:37.


Отправлено: 22:31, 02-08-2012 | #509


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


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

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


Привет всем! Никто не знает из-за чего может возникнуть такая ошибка?

Ошибка возникает после распаковки архивов устанавливаемой игры разбитой на два двд. Ошибка не влияет на устанавлимую игру, но из-за неё потом не работает деинсталлятор. Кто знает как это исправить?

Отправлено: 10:15, 03-08-2012 | #510



Компьютерный форум 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




 
Переход