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

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

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

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


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

Отправлено: 19:06, 28-03-2013

 

SHVtYW4=


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

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


Цитата Farser21:
Все галочки сразу выставлены и немного не удобно постоянно убирать галочки »
Для задач можешь использовать Flags: unchecked.
Для компонентов смотри в сторону Types, там есть выбор custom, compact или full.
Например может присутствовать
Types: full, Types: compact или Types: custom. Удали строчку что касается Types.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 14:18, 14-10-2013 | #1261



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

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


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


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

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


audiofeel, Зачем скрипт, если я его не модифицировал вообще, он такой какой есть, единственное что я изменил так это вот:

Код: Выделить весь код
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-2.bin'),  ExpandConstant('{app}'), '', false, '321989', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

Отправлено: 15:29, 14-10-2013 | #1262


Старожил


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

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


Alloc если один архив сделай так
if not ISArcExtract ( 0, 100, ExpandConstant('{src}\Data-2.bin'), ExpandConstant('{app}'), '', false, '321989', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

Отправлено: 15:50, 14-10-2013 | #1263


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

Ветеран


Contributor


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

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


Nordek, Mat_y, месье знают толк в извращениях. Mat_y, вместо того, чтобы использовать для патча другой AppId дабы тот прописывался в своей ветке реестра и не трогал ветку основной программы, вы занимаетесь ерундой.
Цитата Mat_y:
AppId программы выглядит так:
Код:
[Setup]
AppId={{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU} »
Вот и хорошо. Теперь сочиняете что-нибудь другое, например, {B7EB229F-2DFB-4612-AFC0-99773E1E14A8} или {C90E626C-6E7C-44A4-A8B3-77D584F4BCD8}, или {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RUPATCH}, или WordOfTanksPatch, или еще около 10 млрд. примеров и пишете в AppId патча. Это значение будет использовано инсталлятором при регистрации самого себя в реестре, например, в ветке HKEY_LOCAL_MACHINE\SOFTWARE\...\Uninstall\{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}_is1, т.е. не в ветке основной программы. В свою ветку он пропишет и свои типы, компоненты, задачи и т.д. Пишете в скрипте патча:
Код: Выделить весь код
[Setup]
AppId={{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}
Цитата Mat_y:
Благодаря этому AppId мой установщик находит правильный путь к установленной программе. »
Мало только найти путь установленной программы, чтобы потом указать его на странице выбора папки установки, нужно еще и недопустить запуск патча при отсутствии установленной программы. Согласитесь, глупо устанавливать патч на программу, если ее нет. Пишете в скрипте патча:
Код: Выделить весь код
[Setup]
AppId={{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}

...
function InitializeSetup(): Boolean;
begin
    Result := DirExists(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}'));
    if not Result then MsgBox('Программа не найдена!', mbError, MB_OK);
end;
Цитата Mat_y:
Но если я удаляю установленные сверху программы файлы (через Uninstall ), то удаляется и запись о программе в реестре (точнее она остается, но даже не открывается, выдавая ошибку). »
Mat_y, не держите запущенный regedit на открытой ветке Uninstall (или ветке удаляемой программы) во время удаления программы, чтобы не пришлось потом удивляться присутствию фактически удаленной ветки.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:01, 14-10-2013 | #1264


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


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

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


Всем здраствуйте. Объясните почему мирцают лейблы и др. объекты, которые находяться на картинке, при переходе с одной страницы на другую (причём видно задний фон этих объектов), продолжительностью доли секунды? Ботву неиспользую. И как с этим бороться? Надеюсь вопрос понятен Спасибо!!!

Отправлено: 17:05, 14-10-2013 | #1265


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


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

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


Цитата El Sanchez:
Nordek, Mat_y, месье знают толк в извращениях. »
Спасибо... благодаря Вам я меняю ход мышления... проверю Ваш способ... думаю это идеально (я просто на самой первой ступени изучения всех этих скриптов и самого Inno, но благодаря подобным советам начинаю лучше понимать сами подходы)

Можете объяснить вот это место
Код: Выделить весь код
%7d_is1
и вот это
Код: Выделить весь код
InstallLocation
Цитата El Sanchez:
Mat_y, не держите запущенный regedit на открытой ветке Uninstall (или ветке удаляемой программы) во время удаления программы, чтобы не пришлось потом удивляться присутствию фактически удаленной ветки. »
Вах! Телепат!

Отправлено: 16:33, 15-10-2013 | #1266


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


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

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


Приветствую!
Возник вопрос, а можно ли использовать компоненты, но при этом не использовать типы установки? Просто столкнулась с тем, что даже если вообще не вводить секцию types, при установке все равно получается выбор типа установки (из тех стандартных, что у него есть: полный, выборочный, компактный)

Отправлено: 17:13, 15-10-2013 | #1267


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

Ветеран


Contributor


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

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


Цитата Mat_y:
%7d_is1 »
Mat_y, %7d - шестнадцатиричное представление символа }. Константа {reg} имеет следующий синтаксис: {reg:HKxx\SubkeyName,ValueName|DefaultValue}. SubkeyName может содержать в себе символы { и }, как в вашем случае, и , чтобы при парсинге константы эти символы воспринялись в литеральном смысле, а не как часть синтаксиса константы, нужно их экранировать. Открывающая скобка { экранируется собой же, закрывающая шестнадцатиричным представлением. Все это в справке есть, кстати.
Цитата Shkutu:
Просто столкнулась с тем, что даже если вообще не вводить секцию types, при установке все равно получается выбор типа установки (из тех стандартных, что у него есть: полный, выборочный, компактный) »
Shkutu, пропишите только это:
Код: Выделить весь код
[Types]
Name: custom; Description: Custom installation; Flags: iscustom
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:01, 15-10-2013 | #1268


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


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

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


Цитата El Sanchez:
Мало только найти путь установленной программы, чтобы потом указать его на странице выбора папки установки, нужно еще и недопустить запуск патча при отсутствии установленной программы. Согласитесь, глупо устанавливать патч на программу, если ее нет. Пишете в скрипте патча:
читать дальше »
Код: Выделить весь код
Код:
[Setup]
AppId={{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}
...
function InitializeSetup(): Boolean;
begin
 Result := DirExists(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}'));
 if not Result then MsgBox('Программа не найдена!', mbError, MB_OK);
end;
»
Ну тут я не соглашусь... у многих полный бардак в системе и реестре... так что пользователь может и просто обломаться. Достаточно просто находить путь к папке с игрой, а если он не найден, то давать возможность делать это самостоятельно.

Но у меня появился к Вам еще вопрос.
Сейчас я проверяю правильность выбранной папки...
читать дальше »
Код: Выделить весь код
///////////ПРОВЕРЯЕМ ПРАВИЛЬНОСТЬ ДИРЕКТОРИИ/////////////////////
function NextButtonClick(CurPageID: Integer): Boolean;
begin
    Result := True;

    case CurPageID of
        wpSelectDir:
        begin
            Result := FileExists(ExpandConstant('{app}')+'\GameName.exe');
            if not Result then MsgBoxEx(WizardForm.Handle, 'По данному пути игра не найдена! Еще раз проверьте путь установки!', 'Неверно указан путь к игре', MB_OK or MB_ICONWARNING, 0, 0);
        end;
    end;
  end;
////////////////////////////////////////////////////////////////////


Проверяемый фаил содержит в свойствах номер версии... можно ли как-то еще и версию фала проверять?

Отправлено: 09:10, 16-10-2013 | #1269


Аватара для nik1967

Старожил


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

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


Цитата Mat_y:
можно ли как-то еще и версию фала проверять? »
Можно
Код: Выделить весь код
[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
OutputDir=.
VersionInfoVersion=1.0.0.3

[ code]
function FileVersion(FilePath:string):string;              // версия файла
var
  oFS: Variant;
begin
  oFS := CreateOleObject('Scripting.FileSystemObject');
  Result := oFS.GetFileVersion(FilePath);
end;

procedure InitializeWizard();
begin
  if FileExists(ExpandConstant('{src}\setup.exe')) then
    MsgBox(FileVersion(ExpandConstant('{src}\setup.exe')), mbInformation, MB_OK);
end;

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


Последний раз редактировалось nik1967, 16-10-2013 в 13:26.

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

Отправлено: 12:39, 16-10-2013 | #1270



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

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

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




 
Переход