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

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

Автор: Sero
Дата сообщения: 06.08.2007 19:44
Chanka

Цитата:
Я нашёл это слайд-шоу на каком-то форуме.

а где?
Автор: DroN_S
Дата сообщения: 06.08.2007 20:30
Genri
да нет, ты наверное не понял...
мне надо просто сделать скин на установочное окно...
Автор: Chanka
Дата сообщения: 06.08.2007 20:56
Sero,
Я уже не помню. это было пол года назад. Просто рылся сегодня в старых файлах и вот наткнулся на это. Но кажется где-то почта автора должна быть. Если найду напишу если тебе нужно.
Автор: Genri
Дата сообщения: 06.08.2007 21:20
DroN_S
Цитата:
ты наверное не понял...
-- тут ты прав. Действительно не понял. И судя по всему, не я один

Я по скинам не спец. Но во избежание дальнейших недоразумений, выложи скриншот или рисунок, как примерно должно быть. Так как делают другие. Например:
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235#9
или
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=120#21
или
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=1040#10
Автор: Unc1e
Дата сообщения: 06.08.2007 22:24
Есть dll-ка созданная для разработчиков игр, чтобы облегчить добавление ярлыков игры в папку "Игры" в Windows Vista. Скачать ее можно тут. Инструкция по использованию и примеры для InstallScript и MSI(на английском) можно посмотреть тут. Кто-нибудь сможет интегрировать эту dll в Inno Setup?
Автор: Sero
Дата сообщения: 06.08.2007 22:52
Chanka

Цитата:
Если найду напишу если тебе нужно.

Да нет,не надо.... просто ради интереса.
Автор: Shaman2
Дата сообщения: 06.08.2007 23:56

Цитата:
2. По поводу подписи экзешника: это лучше узнавать у програмеров. Могу только предложить тупой вариант: в проекте объявляешь константу (напр. "10485212"), а в коде делаешь с ней пару операций (чтоб оптимизатор ее не выкинул). Все. Эта константа и есть основа твей подписи.


Как изменить эту константу из Inno ?


Цитата:

Ну и чтоб в этом посте кроме оффтопа было и что-то по инно - здесь пример "подписывания" такого экзешника при инсталляции. В качестве файла, который требуется подписать, используется MyProg.exe из примеров инно. В данном примере код генерится случайным образом и при запуске MyProg.exe показывается в меседжбоксе. Каждая инсталляция - уникальный экзешник


Inno инсталл это тоже экзешник. Подскажи, как обратиться к нему из кода для получения константы?
Автор: Genri
Дата сообщения: 07.08.2007 00:56
Shaman2 --
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 11:40
Помогите сделать так чтобы в конце установки вылетало окошечко с надписью типа: "Программа (Имя программы) установлена!" т.к. я отключил страницу конца установки.
И ещё, в окне информации клавиши "Назад" нет, а при нажатии на кнопку "Далее" перходит к странице установки, а если на странице установки нажать клавишу "Назад" то на странице с информацией появится клавиши "Назад", где её раньше небыло!

[Setup]
VersionInfoVersion=0.0.0.2
VersionInfoTextVersion=0.0.0.2
OutputBaseFilename=3eJIeHb Textures MOD v_0.2
AppVersion=0.2
AppVerName=3eJIeHb Textures MOD v_0.2
Compression=lzma/ultra
AllowRootDirectory=True
AppName=3eJIeHb Textures MOD
AppPublisher=3eJIeHb, Inc.
AppPublisherURL=http://www.ffy.moy.su/
AppSupportURL=http://www.ffy.moy.su/
AppUpdatesURL=http://www.ffy.moy.su/
DefaultDirName={reg:HKLM\SOFTWARE\GSC Game World\STALKER-SHOC,InstallPath}
OutputDir=E:\Мои моды
DefaultGroupName=3eJIeHb Textures MOD
DirExistsWarning=No
DisableDirPage=True
DisableFinishedPage=True
DisableProgramGroupPage=yes
EnableDirDoesntExistWarning=False
InfoBeforeFile=E:\Мои моды\readme.rtf
MinVersion=0,5.01.2600
AppCopyright=Copyright © 2007 3eJIeHb
UninstallRestartComputer=False
ShowLanguageDialog=no
SolidCompression=yes
SetupIconFile=E:\Сталкер\Stalker\icons\radsymbol.ico
VersionInfoCompany=3eJIeHb
WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp

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

[Files]
Source: E:\Мои моды\gamedata\*; DestDir: {app}\gamedata\; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Registry]
Root: HKLM; SubKey: Software\3eJIeHb MOD; ValueType: string; ValueName: Version; ValueData: 0.2; Flags: CreateValueIfDoesntExist UnInsClearValue deletevalue noerror

[Icons]
Name: {group}\{cm:ProgramOnTheWeb,3eJIeHb Textures MOD}; Filename: http://www.ffy.moy.su/
Name: {group}\{cm:UninstallProgram,3eJIeHb Textures MOD}; Filename: {uninstallexe}

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
WizardForm.NextButton.OnClick(WizardForm.NextButton);
WizardForm.BackButton.visible := False;
end;
end;

[Run]
Filename: {app}\bin\XR_3DA.exe; Description: {cm:LaunchProgram,S.T.A.L.K.E.R.}; Flags: nowait postinstall skipifsilent

[UninstallDelete]
Name: {app}\gamedata\*; Type: files; Languages: " russian"
Автор: Genri
Дата сообщения: 07.08.2007 13:25
3eJIeHb
Цитата:
Помогите сделать так чтобы в конце установки вылетало окошечко с надписью типа: "Программа (Имя программы) установлена!" т.к. я отключил страницу конца установки.

Код:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
MsgBox('Программа ' + '{#SetupSetting("AppName")}' + ' установлена!', mbInformation, MB_OK);
end;
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 13:43
Genri

Цитата:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
MsgBox('Программа ' + '{#echo SetupSetting("AppName")}' + ' установлена!', mbInformation, MB_OK);
end;

Чет он ругается! Говрит: "Unknown identifier 'CurStep'"
Автор: Genri
Дата сообщения: 07.08.2007 13:50
3eJIeHb -- ты не мою цитату приводи, а эту функцию из своего скрипта. Вероятно у тебя ошибка (подозреваю, что у тебя procedure CurStepChanged(CurrStep: TSetupStep);)
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 13:53
Genri

А нет это я тупонул! Извеняюсь!

Добавлено:
Кстит что мне нужно сделать чтобы после нажатия на кнопочку "ОК" запустилась игра, а то он только открывает окно и игра сказу запускается, неуспеваешь даже прочитать что на кнопочке написано! А ещё лучше будет если если появится 2 кнопочки: Ок и Сancel и при нажатии на ОК- Запускается ирга, а на Cancel соответсвенно нет. Код как вы понимете находится выше.
Автор: Genri
Дата сообщения: 07.08.2007 14:20
3eJIeHb
1. убрать :
[Run]
Filename: {app}\bin\XR_3DA.exe; Description: {cm:LaunchProgram,S.T.A.L.K.E.R.}; Flags: nowait postinstall skipifsilent

2. изменить :
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
if CurStep = ssDone then
if MsgBox('Программа ' + '{#SetupSetting("AppName")}' + ' установлена!' + #10#10#13 +
'Запустить ' + '{#SetupSetting("AppName")}' + '?' , mbInformation, MB_OKCANCEL) = IDOK then
Exec(ExpandConstant('{app}\bin\XR_3DA.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;

слегка подправил: #echo в данном случае можно не ставить
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 14:47
УУУУУУУУУ круто! А можно ещё вопрос? У юзера стоит мод к пимеру версия у него 1.0 К примеру, а ему дали, взал, скачал, ну вообщем надыбал версию 0.9 и что из этого? А то что он её поставит без всякихусилий, а мне нужно чтобы ему выдалось сообщение что: "Вы пытаетесь установить более старую версиб мода! У вас уже стоит версия *****! Возможно вы бы хотели удалить мод который стоит у вас? Кнопочки "Да" и "Нет"" при нажатии на "Да" Мод удаляется, при нажатии на "Нет" установочник закрывается! Как вы наверное заметили установочник дклает записи в реестре со значением версии мода! Вот!
Автор: Genri
Дата сообщения: 07.08.2007 15:04
3eJIeHb -- ну так а в чем проблемы ? При запуске считываешь версию из реестра, сравниваешь с устанавливаемой и в зависимости от результата выполняешь нужные действия. В хелпе куча функций для работы с реестром.
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 15:10
Мммммм.... как бы это сказать, кароче я хреново разбераюсь с этим кодом! Если бы я разбирался, я бы не писал на форуме, а делал бы сам! Почему и прошу помощи у специалистов! Я с горем пополам тот код написал! Ну раз так, то извените за отнятое у вас драгоценное время!
Автор: Genri
Дата сообщения: 07.08.2007 15:22
3eJIeHb -- так ведь я отсюда не вижу - кто как разбирается Да и из твоего поста не понятно, что ты хочешь: чтоб тебя научили или чтоб за тебя написали

Счас времени особо нет. Будет время гляну.
Автор: NightW0lf
Дата сообщения: 07.08.2007 15:41
3eJIeHb

Цитата:
У юзера стоит мод к пимеру версия у него 1.0 К примеру, а ему дали, взал, скачал, ну вообщем надыбал версию 0.9 и что из этого? А то что он её поставит без всякихусилий, а мне нужно чтобы ему выдалось сообщение что: "Вы пытаетесь установить более старую версиб мода! У вас уже стоит версия *****! Возможно вы бы хотели удалить мод который стоит у вас? Кнопочки "Да" и "Нет"" при нажатии на "Да" Мод удаляется, при нажатии на "Нет" установочник закрывается! Как вы наверное заметили установочник дклает записи в реестре со значением версии мода!

Скачай руководство v5.1 от Kindly из шапки все это есть)))
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 17:09
Зыыыы, немного разобрался! Но есть один вопрос. Как мне сделать чтобы ключ со значением куда был установлен деинсталятро записался в реестр и чтобы дописывалось значение /silent? Заранее спасибо.

function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
If RegQueryStringValue(HKLM, 'Software\3eJIeHb MOD', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Обнаружена ранее услановленная версия программы.' #13#13 'Вы хотите удалить ранее установленную версию программы?', mbConfirmation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;
procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter;
end;

Добавлено:
Да, и каким образом сделать чтобы значение Version писалось вот тут
Цитата:
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Обнаружена ВОТ ТУТ ЗНАЧЕНИЕ ИЗ КЛЮЧА Version версия программы.' #13

Автор: Genri
Дата сообщения: 07.08.2007 18:25
3eJIeHb
Цитата:
Как мне сделать чтобы ключ со значением куда был установлен деинсталятро записался в реестр и чтобы дописывалось значение /silent?
-- а зачем ? Думаю, тебе надо примерно так :
Код:
[Registry]
Root: HKLM; SubKey: Software\3eJIeHb MOD; ValueType: string; ValueName: Version; ValueData: {#SetupSetting("AppVersion")}; Flags: UnInsClearValue deletevalue

[Code]
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
PrevUninstExe: string;
begin
Result:=True;
If RegQueryStringValue(HKLM, 'Software\3eJIeHb MOD', 'Version', ResultStr) then
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + '{#SetupSetting("AppName")}_is1', 'UninstallString', PrevUninstExe);
If ResultStr > '{#SetupSetting("AppVersion")}' then
begin
if MsgBox('Обнаружена ранее услановленная версия программы (v.' + ResultStr + ')' #13#13 'Вы хотите удалить ранее установленную версию программы?', mbConfirmation, MB_YESNO) = idYes then
if not Exec(RemoveQuotes(PrevUninstExe), '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 18:33
Я хотел бы, чтобы пользователь ног видеть какя у него версия и какую он ставит!
Кстати он ругается!
[more=Код][Registry]
Root: HKLM; SubKey: Software\3eJIeHb MOD; ValueType: string; ValueName: Version; ValueData: {#SetupSetting("AppVersion")}; Flags: UnInsClearValue deletevalue

[Icons]
Name: {group}\{cm:ProgramOnTheWeb,3eJIeHb Textures MOD}; Filename: http://www.ffy.moy.su/
Name: {group}\{cm:UninstallProgram,3eJIeHb Textures MOD}; Filename: {uninstallexe}

[Code]
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
PrevUninstExe: string;
begin
Result:=True;
If RegQueryStringValue(HKLM, 'Software\3eJIeHb MOD', 'Version', ResultStr) then
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + '{#SetupSetting("AppName")}_is1', 'UninstallString', PrevUninstExe);
If ResultStr > '{#SetupSetting("AppVersion")}' then
begin
if MsgBox('Обнаружена ранее услановленная версия программы.' #13#13 'Вы хотите удалить ранее установленную версию программы?', mbConfirmation, MB_YESNO) = idYes then
if not Exec(RemoveQuotes(PrevUninstExe), '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;[/more]

Добавлено:
Говрит: "Mismatched or misplaced quotes on parametr "ValueData""
Автор: Genri
Дата сообщения: 07.08.2007 18:57
3eJIeHb -- вообще желательно указывать какая строка ему не нравится. Подозреваю что это секция Registry. В этой секции в ValueData прописывается AppVersion. Значит надо проверить что у тебя в AppVersion либо нет ли лишних кавычек в самой секции в ValueData: {#SetupSetting("AppVersion")}

Дальнейшие вопросы лучше в личку.
Автор: Dimbay
Дата сообщения: 07.08.2007 19:13
Genri
Сам я работаю в торговле и знаю,что такое дебильные вопросы,но тем не менее если не трудно:где взять пару примеров по моему вопросу?
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 20:20
Вот узнал что можно удалять в ускоренном режиме с помощю параметра /SILENT, а куда вставлять его незнаю! В секции [Setup] дописал Uninstallable=yes а что дальше делать незнаю!

Добавлено:
Люди, подскажите плз, что нужно сделать чтобы в секции [Code] в MsgBox показывалось значение из определённого ключа реестра? [more=Вот код]function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\3eJIeHb Textures MOD_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила ВОТ СЮДА НУЖНО ВОТКНУТЬ ЗНАЧЕНИЕ ИЗ КЛЮЧИКА версии.' #13#13 'Вы желаете предварительно удалить ее?', mbConfirmation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;[/more]

Добавлено:
Да, забыл добавить. Вот путь к ключику (HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\3eJIeHb Textures MOD_is1) имя ключика DisplayVersion-вот из него нужно вытянуть значение. Тип значения у него: REG_SZ.
Автор: iTASmania_Inc
Дата сообщения: 07.08.2007 21:47
3eJIeHb
По-моему, так:

[Setup]
AppVersion=0.2
AppVerName=3eJIeHb Textures MOD v_0.2
AppName=3eJIeHb Textures MOD
DefaultDirName=C:\Temp

[Code]
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\3eJIeHb Textures MOD_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила такую-то программу ' + ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\3eJIeHb Textures MOD_is1,DisplayVersion}') + ' версии.' #13#13 'Вы желаете предварительно удалить ее?', mbConfirmation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;

Только в таком случае наличие директивы AppVersion=0.2 обязательно! На мой взгляд, лучше DisplayName, хотя это дело вкуса!
Автор: 3eJIeHb
Дата сообщения: 07.08.2007 21:58
Спасибо БОЛЬШОЕ всё робит! Даже лучше чем я думал!
Автор: Genri
Дата сообщения: 07.08.2007 22:40
Dimbay
Цитата:
где взять пару примеров по моему вопросу?
-- если речь идет о вопросе "найти в системе пользователя папку с игрой, в ней папку саунд и скопировать её в папку мода", то конкретно таких примеров я не помню (тем более, ты так и не ответил, какие критерии могут быть применены - поиск в реестре, поиск по диску, ввод пользователя). Можешь поискать в этой и в старой ветке по слову "backup" - не совсем то, но близко к твоей задаче.
Но вообще, инно имеет довольно неплохой (а с учетом стоимости программы - отличный) хелп и хороший набор примеров в комплекте поставки. Плюс Kindly собрал довольно большой архив интересных решений. Линк в шапке. Там же русский хелп от BagIra (если с английским не дружишь). Вобщем, используй то что рядом

Сесть чтоль - учебник написать ?
Шутка. "Сесть я всегда успею" ((C)Иван Васильевич меняет профессию)
Автор: Wilmots
Дата сообщения: 08.08.2007 02:07
Вышла 5.1.14
http://files.jrsoftware.org/is/5/isetup-5.1.14.exe
Автор: Chuvakstepan
Дата сообщения: 08.08.2007 07:03

Цитата:
Вышла 5.1.14

Интересно, даже официального релиза на сайте не было, а ссылка уже есть

Ждём QuickStartPack по этой ссылке

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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