Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: gMaX
Дата сообщения: 29.09.2007 03:36
мм.... новый innounp (от 25.09.2007) умеет распаковывать 5.2.0 исправьте плиз в шапке )
Автор: Victor_Dobrov
Дата сообщения: 29.09.2007 04:17
Alex Zaguzin
пример инсталлятора с Corona Skin версии 5.0, папка Corona должна быть рядом с этим скриптом.

[Setup]
AppName=Corona Lite
AppVerName=Inno Setup Corona Skin & System Test
DefaultDirName={pf}\Corona Skin

#define SkinPath AddBackslash(SourcePath) + "Corona\"
#include SkinPath +"Corona_kernel.iss"

[Code]
Procedure CurPageChanged(CurPageID: Integer);
Begin
    ShowSkinPage(CurPageID)        { Corona Skin by Victor Dobrov }
End;

Procedure InitializeWizard;
Begin
    InitializeSkin    { Corona Skin by Victor Dobrov }
End;

Procedure DeinitializeSetup;
Begin
    DeInitializeSkin
End;
Автор: Alex Zaguzin
Дата сообщения: 29.09.2007 12:28
Victor_Dobrov - ОК. Огромное спасибо. Теперь допетрил как всё прописывать.
Автор: viktor9
Дата сообщения: 29.09.2007 13:01
Какая переменая заставляет создаваться ярлык в панеле быстрого запуска и где можно посмотреть что означают определеные переменые

Цитата:
{userdesktop}
{group}
{userappdata}
и т.д
Автор: iTASmania_Inc
Дата сообщения: 29.09.2007 13:17
viktor9

Цитата:
где можно посмотреть что означают определеные переменые

В хелпе!
{userdesktop} - Рабочий стол пользователя
{group} - Все программы в меню "Пуск"
{userappdata} - Documents and Settings\Имя пользователя\Application Data

Цитата:
Какая переменая заставляет создаваться ярлык в панеле быстрого запуска

По-моему, такой нету, но делается так:

[Tasks]
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Icons]
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\My Program"; Filename: "{app}\MyProg.exe"; Tasks: quicklaunchicon
Автор: Victor_Dobrov
Дата сообщения: 29.09.2007 14:52
Немного обновил Corona Skin. Подробности в первом посте (на первой странице)
Автор: viktor9
Дата сообщения: 29.09.2007 19:43
iTASmania_Inc
Спасибо
Автор: Unc1e
Дата сообщения: 30.09.2007 12:41
Дайте пожалуйста кто-нибудь скрипт для запуска Logo.exe (by AtotIK), а то я че то найти никак не могу. Заранее СПАСИБО.
Автор: Sampron
Дата сообщения: 30.09.2007 15:32
Unc1e

[Files]
Source: "Logo.bmp"; DestDir: {tmp}; Flags: dontcopy;
Source: "Logo.exe"; DestDir: {tmp}; Flags: dontcopy;

[Code]
procedure InitializeWizard();
var
ResultCode_1: Integer;
begin
ExtractTemporaryFile('Logo.bmp')
ExtractTemporaryFile('Logo.exe')
Exec(ExpandConstant('{tmp}\Logo.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode_1)
end;
Автор: Unc1e
Дата сообщения: 30.09.2007 15:55
Sampron
Спасибо! Только мне надо было запустить без мастера, то есть function InitializeSetup(): Boolean; Но это я уже поправил сам.
Автор: fty
Дата сообщения: 01.10.2007 10:36
Собрал FAQ из двух предыдущих веток, CHM-файл, вопросы старался разместить более-менее по тематике, грамматические ошибки по возможности исправлял.
Некоторые вопросы перекликаются с приведенными в руководстве Kindly.
Если это кому-нибудь нужно, прикрепите, куда-нибудь, чтобы не потерялось.
http://data.cod.ru/33596341706
Автор: baw17
Дата сообщения: 01.10.2007 12:02
прошу помощи
не срабатывает секция

Код: Root: HKCR; Subkey: "CLSID\645FF040-5081-101B-9F08-00AA002F954E\Shell\Запустить CCleaner"; ValueName: "По умолчанию"; ValueType: string; ValueData: "@=C:\\Program Files\\CCleaner\\CCleaner.exe /AUTO"; Flags: uninsdeletekey

Root: HKCR; Subkey: "CLSID\645FF040-5081-101B-9F08-00AA002F954E\Shell\Открыть CCleaner..."; ValueName: "По умолчанию"; ValueType: string; ValueData: "@=C:\\Program Files\\CCleaner\\CCleaner.exe"; Flags: uninsdeletekey
Автор: Victor_Dobrov
Дата сообщения: 01.10.2007 14:22
Corona Skin & System Test & SlideShow & Player - обложка для Inno Setup с проверкой системных требований.
Исправлена функция CalcDirSize. При первой установке приложения серийный номер не подставляется. Проигрыватель: плэйлист обновляется быстрее. В плэйлист добавляются AVI-файлы, которые показываются в фоновом окне (не все, так как используется MCI).
Автор: fty
Дата сообщения: 01.10.2007 16:02
Root: HKCR
Возможно, надо HKCU
Автор: Dimbay
Дата сообщения: 01.10.2007 19:15
Не нашёл в хелпе значение флага createallsubdirs,дословно перевести,то могу,но правильно ли это будет.
Автор: Ipse San
Дата сообщения: 01.10.2007 21:18
Dimbay
Создать все подкаталоги - если файл зарыт на несколько уровней подкаталогов (WINDOWS\system32\DRVSTORE\), то при распаковке файла в каталог DRVSTORE\ инсталлятор автоматически создаст все каталоги верхнего уровня: WINDOWS\system32\ если они не существуют.
Автор: Dimbay
Дата сообщения: 01.10.2007 21:39
Ipse San
Я так понимаю,что здесь Ссылка этот флаг не нужен.И ещё,я уже несколько раз спрашивал,почему при нажатии "изменить" в установке и удалении,выскакивает сообщение,что файл уже удалён,где у меня засада?Просто охота до ума всё довести.
Спасибо!
Автор: Ipse San
Дата сообщения: 01.10.2007 22:03
baw17
Ты на корзину что-то вешаешь? Тогда можно будет написать так:

Код: [Registry]
Root: HKCR; Subkey: CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell; ValueType: none; Flags: uninsdeletekeyifempty

Root: HKCR; Subkey: CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell\StartCCleaner; ValueType: string; ValueData: Запустить СCleaner; Flags: uninsdeletekey

Root: HKCR; Subkey: CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell\StartCCleaner\command; ValueType: string; ValueData: C:\Program Files\CCleaner\CCleaner.exe /AUTO; Flags: uninsdeletekey

Root: HKCR; Subkey: CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell\OpenCCleaner; ValueType: string; ValueData: Открыть СCleaner; Flags: uninsdeletekey

Root: HKCR; Subkey: CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell\OpenCCleaner\command; ValueType: string; ValueData: C:\Program Files\CCleaner\CCleaner.exe; Flags: uninsdeletekey
Автор: Victor_Dobrov
Дата сообщения: 02.10.2007 02:03

Цитата:
почему при нажатии "изменить" в установке и удалении сообщение,что файл уже удалён

Dimbay, наверное, ты неправильно прописываешь путь в директиве AppModifyPath.

[Setup]
AppName=Change
AppVerName=Change
DefaultDirName={pf}\Change
AppModifyPath={app}\unins000.exe /LOG
Автор: baw17
Дата сообщения: 02.10.2007 07:18
Ipse San
fty

парни спасибо я разобрался что надо вначале ставить 2 {{ и в крнце 1 }
но тут вот незадача я использую вот эти строки

Код: Root: HKCR; Subkey: "CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell\Запустить CCleaner\command"; ValueType: string; ValueData: "C:\Program Files\CCleaner\CCleaner.exe /AUTO"; Flags:
Root: HKCR; Subkey: "CLSID\{{645FF040-5081-101B-9F08-00AA002F954E}\Shell\Открыть CCleaner...\command"; ValueType: string; ValueData: "C:\Program Files\CCleaner\CCleaner.exe"; Flags:
Автор: Ipse San
Дата сообщения: 02.10.2007 12:33
baw17
Странно. Тот код, что я дал подчищает все корректно, я проверил. И даже ветку Shell удаляет, если она пустая. Ты пробовал забить мой код "как есть"?
Автор: Alex Zaguzin
Дата сообщения: 02.10.2007 12:39
fty - спасибо за работу. Многим пригодится( в том числе и мне, как ламеру в Инно). Извиняюсь за офтоп, ежели что.
Автор: baw17
Дата сообщения: 02.10.2007 14:26
Ipse San
спасибо братан твой код работает, значит я немного был невнемателен
Автор: Anger007
Дата сообщения: 03.10.2007 10:25
Создание резервной копии реестра.
Если ключа не существовало, новые значения сохраняться. Можно добавть флаг для удаления.
[more]

Код:
[Tasks]
Name: src; Description: "Создать резервную копию оригинальных файлов"

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{3E4B349F-10B5-4586-9D99-489A90A8B228}"; ValueType: string; ValueName: "InstallLocation"; ValueData: "{app}"; Flags: noerror; BeforeInstall: BackupReg('{3E4B349F-10B5-4586-9D99-489A90A8B228}');
;uninsdeletevalue - Удалять параметр при удалении программы

[Code]

// Резервная копия изменяемых записей реестра
procedure BackupReg(Subkey: String);
var
ResultCode: Integer;
BackUpDirS: String;
begin
If IsTaskSelected('src') then begin
BackUpDirS := ExpandConstant('{pf}\InstallShield Installation Information\') + Subkey
If Not DirExists (BackUpDirS) then
CreateDir(BackUpDirS);
Exec(ExpandConstant('{win}\regedit.exe'), '-ea backup.reg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + Subkey + '"', BackUpDirS, sw_HIDE, ewWaitUntilTerminated, ResultCode);
End;
end;

// Восставновление измененных записей реестра
procedure RestoreReg(Subkey: String);
var
ResultCode: Integer;
BackUpDirS: String;
begin
BackUpDirS := ExpandConstant('{pf}\InstallShield Installation Information\') + Subkey
If FileExists (BackUpDirS + '\backup.reg') then begin
RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+Subkey)
Exec(ExpandConstant('{win}\regedit.exe'), '/s backup.reg', BackUpDirS, sw_HIDE, ewWaitUntilTerminated, ResultCode);
// MsgBox(IntToStr(ResultCode), mbError, MB_OK);
// ResultCode: 0 - все Ок, если файла нет тоже 0. Фактически проверка на наличие regedit.exe, но все же проверим:
If ResultCode=0 then
DeleteFile(BackUpDirS + '\backup.reg');
RemoveDir(BackUpDirS);
End;
end;

// --------- Функции деинсталлятора (события) ----------- //
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ResultCode: Integer;
BackUpDirS: String;
begin
if CurUninstallStep = usPostUninstall then
RestoreReg('{3E4B349F-10B5-4586-9D99-489A90A8B228}');
end;
Автор: Victor_Dobrov
Дата сообщения: 04.10.2007 11:17
Что-то топик замер, придётся добавить сообщение...
Слайдшоу - В архиве 5 скриптов: 1) фоновый рисунок 2) слайдшоу 3) скринсевер 4) системные скринсэверы 5) проигрывание AVI-файла в фоне.
Обновил Corona Skin: изменено оформление страниц wpSelectDir и wpSelectProgramGroup.
Автор: Dimbay
Дата сообщения: 04.10.2007 17:41
Victor_Dobrov
Приветствую!Сделал,что-то типа маленького руководства.
Если есть возможность посмотри,вдруг где-нибудь накосячил.
Заранее благодарен.


Добавлено:
Victor_Dobrov
Приветствую!Сделал,что-то типа маленького руководства.
Если есть возможность посмотри,вдруг где-нибудь накосячил.
Заранее благодарен.
[more=вот][/more]
Автор: Alex Zaguzin
Дата сообщения: 04.10.2007 17:55
Dimbay - ээ. Хотел тоже поглядеть твоё руководство, а там пусто...Редактируешь?
Автор: Dimbay
Дата сообщения: 04.10.2007 18:07


Добавлено:
[more=текст];Знак ; означает,что эта строка информационная и не будет задействована в компиляции.

[Setup]
;Основные директивы секции можно задать с помощью мастера,встроенного в программу.

AppName=MyMod
;Название мода.

AppVerName=MyMod версия 1.4
;Версия мода.Обязательно должна иметь значение AppName и номер версии.

DefaultDirName={pf}
;Выбор пути установки через "Обзор".В данном случае по умолчанию будет предложено установить программу в Program Files.Константа {pf}.
;Может иметь вид DefaultDirName={pf}\MyMod.

DefaultGroupName=MyMod
;Директива,которая определяет имя группы меню Пуск по умолчанию.

OutputDir=C:\Documents and Settings\user\Рабочий стол
;Куда будет помещен скомпилированный инсталлятор.

OutputBaseFilename=MyMod версия 1.4
;Задаётся имя получаемого инсталлятора.

Compression=lzma
;Метод сжатия.

SolidCompression=yes
;Уплотненное сжатие.

AppendDefaultDirName=no
;При значении yes,при выборе пути установки через "Обзор" автоматически добавляется папка с именем взятым из DefaultDirName.
;Например (при значении yes) DefaultDirName={pf}\MyMod,при выборе в "Обзоре" D:\Games получаем D:\Games\MyMod.

DirExistsWarning=no
;При значении yes инсталлятор всегда будет выдавать сообщение "Папка: … уже существует."Вы хотите продолжить установку в эту папку?" при попытке установки в существующую папку.

ShowComponentSizes=yes
;При значении yes будет показываться размер компонентов в списке выбора компонентов.

InfoBeforeFile="C:\Documents and Settings\User\Рабочий стол\Папка с файлами для инсталляции\MyInfoBefore.txt"
;В этом текстовике можете поместить нужную для устоновки информацию... .
;Будет отображаться перед страницей выбора папки установки в окне инсталлятора.
;Файл MyInfoBefore.txt связан с секцией [Files].

[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
;Выбор языка.Без этой секции,язык интерфейса мастера установки будет английский.

[Files]
Source: "C:\Documents and Settings\User\Рабочий стол\Папка с файлами для инсталляции\MyInfoBefore.txt"; DestDir: "{app}"
;Source: Полный путь,откуда берётся файл для компиляции.
;DestDir: Куда должен установиться файл в системе пользователя.
;Константа "{app}" означает,что папка,куда должен установиться файл выбирается пользователем в окне выбора папки назначения.
;В данном примере константе "{app}" будет присвоено значение "D:\Games\SEGA\Medieval II Total War"(D:-диск пользователя,где установлена игра).

Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs overwritereadonly
;Знак * означает,что из папки \data\ берутся все файлы.
;Flags: ignoreversion Установить файл,который уже установлен в системе пользователя.Перемещает существующие файлы,не обращая внимание на номера версий.
;Flags: recursesubdirs Указывает искать файлы с тем же именем в подпапках папки,указанной в параметре Source.
;Flags: overwritereadonly Всегда перезаписывает файл с отметкой "только для чтения".
;Все флаги подробно описаны в хелпе,который идёт с программой.

Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\MyMod\*"; DestDir: "{app}\MyMod"; Flags: ignoreversion recursesubdirs overwritereadonly
Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\MyMod.cfg"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\export_descr_buildings.txt"; Components: A; DestDir: "{app}\MyMod\data\"; Flags: ignoreversion recursesubdirs overwritereadonly
Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\descr_strat.txt"; Components: A; DestDir: "{app}\MyMod\data\world\maps\campaign\imperial_campaign\"; Flags: ignoreversion recursesubdirs overwritereadonly
Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\export_descr_unit.txt"; Components: A; DestDir: "{app}\MyMod\data\"; Flags: ignoreversion recursesubdirs overwritereadonly
;Компоненты,которые пользователь может установить на выбор.В данном случае все три файла принадлежат одному компоненту А,который описан в секции [Components].

[Icons]
Name: {userdesktop}\MyMod.exe; Filename: "{app}\medieval2.exe"; Parameters: " @MyMod.cfg"; WorkingDir: "{app}"; Tasks: DesktopIcon
;Name: Имя и расположение создаваемого ярлыка.В данном примере ярлык MyMod.exe будет помещен на рабочем столе,константа{userdesktop}.В свойствах ярлыка получаем "D:\Games\SEGA\Medieval II Total War\medieval2.exe" @MyMod.cfg
;Filename: Полный путь к файлу, на который указывает ярлык.
;Parameters: Параметры командной строки для ярлыка.
;WorkingDir: Папка,из которой запускается программа.
;Tasks: Вызывает задание,описанное в секции [Tasks].
Name: {userdesktop}\Удалить MyMod.exe; Filename: "{app}\unins000.exe"; WorkingDir: "{app}"; Tasks: DesktopIcon

[Tasks]
Name: src; Description: "Сохранить оригинальные файлы игры"; Flags: exclusive
;Делаем Backup через секцию [Code].
;Description: Описание компонента.
;Flags: exclusive Пользователь не сможет отменить выбор этого пункта.
Name: "DesktopIcon"; Description: "Создать ярлык MyMod на рабочем столе"; Flags: unchecked
Name: "DesktopIcon"; Description: "Создать ярлык удалить MyMod на рабочем столе"; Flags: unchecked
;Flags: unchecked По умолчанию компонент не будет выбран(галочка снята).

[Types]
;Секция определяет типы установки.
Name: "viborochnaya"; Description: "Выбрать компоненты"; Flags: iscustom
;Flags: iscustom Указывает инсталятору,что тип является выборочным.

[Components]
Name: "A"; Description: "Обычные цены на строительство и юнитов"; Types: viborochnaya

[Code]
function MoveFile(const srcFile, destFile: PChar): Integer;
external 'MoveFileA@kernel32.dll stdcall';

procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
if IsTaskSelected('src') then
begin
basePath := ExpandConstant('{app}');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{app}\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;

;Vatu NeCatanen.Специально для www.tw.org.ua[/more]
Автор: Victor_Dobrov
Дата сообщения: 05.10.2007 00:54
Dimbay, посмотрел Руководство. Навскидку, кавычки в:

[Languages] Name: "rus" ; InfoBeforeFile ; [Files] Source: ; [Tasks] Name: ; [Types] Name:...
ставить не нужно, ведь параметры и так отделяются точкой с запятой.

Если пользоваться ISTool, многие комментарии не нужны... (секцию [Code] рекомендую править в SciTE)
P.S. Не советую держать файлы проекта на Рабочем столе, лучше использовать другой раздел или отдельный диск.
Автор: Dimbay
Дата сообщения: 05.10.2007 08:31
Victor_Dobrov
Понял,поправим.
Данке щён)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Поиск в WinDjView


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.