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

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

Автор: Raf_SE
Дата сообщения: 17.11.2007 16:27
У меня проблема. Вобщем сам ключ в реестре присутствует, но всеравно светит то сообщение, которое должно светится только если его нет.
Сам ключ:
Root: HKLM; Subkey: "SOFTWARE\LucasArts\Star Wars Empire at War\1.0"; ValueName: "ExePath";

Код:
[Code]
Function InitializeSetup: Boolean;
Begin
If RegValueExists(HKLM, 'Software\LucasArts\Star Wars Empire at War\1.0\ExePath', ExpandConstant('{#SetupSetting("DefaultDirName")}')) then Result:= True else MsgBox('Star Wars: Empire at Wars не обнаружен.'+#13+'Необходимо установить Star Wars: Empire at Wars перед'+#13+'установкой Star Wars: Empire at Wars - Forces of Corruption', mbInformation, mb_Ok)
End;
Автор: Victor_Dobrov
Дата сообщения: 17.11.2007 22:55
Dimbay, несколько InitializeWizard, (Initialize1, Initialize2 и т. д.):

Procedure Initialize1; Begin
    ... ваш код ...
End;
Procedure InitializeWizard; Begin
    Initialize1
End;

Raf_SE, Вариант 1, укажи DefaultDirName равным ExePath в реестре, например: DefaultDirName={pf}\Star Wars Empire at War

Function InitializeSetup: Boolean; var Str: string; Begin
    RegQueryStringValue(HKLM, 'Software\LucasArts\Star Wars Empire at War\1.0', 'ExePath', Str)
    If Uppercase(Str) = Uppercase(ExpandConstant('{#SetupSetting("DefaultDirName")}\GameData\sweaw.exe')) then Result:= True else MsgBox('Программа {#SetupSetting("AppName")} не установлена!', mbInformation, mb_Ok)
End;
Второй вариант более универсальный, считывает оба ключа из реестра и не зависит от папки установки:
Function InitializeSetup: Boolean; Begin
    If Uppercase(ExpandConstant('{reg:HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppName")}_is1,InstallLocation}\GameData\sweaw.exe')) = Uppercase(ExpandConstant('{reg:HKLM\Software\LucasArts\Star Wars Empire at War\1.0,ExePath}')) then Result:= True else MsgBox('{#SetupSetting("AppName")} не найдена!', mbInformation, mb_Ok)
End;
Автор: Cryzer
Дата сообщения: 18.11.2007 09:47
Здравствуйте опять!
Со временем накопились вопросы. Вот они:
1) Я в секции [InstallDelete], к примеру, написал удаление файла C:\123\myprog.exe + эта строчка ссылается на один из компонентов секции [Components]. Как мне сделать так, чтобы удалилась папка 123, если окажется пустой?
2) Подскажите библиотеку для остановки/запуска служб (и код для действия). Очень-очень надо!
3) Почему в секции [Files] не получается брать dll из C:\WINDOWS\system32\? Мне в ошибке (если я правильно перевёл) предложили прочитать в хелпе про Unsafe Files (что-то не нашёл). Что тут сделать надо?
Автор: Yamarus
Дата сообщения: 18.11.2007 11:01
Извините, а как сделать, чтоб можно было выбрать тип инсталяции (типа русская версии и англ) чтоб при выборе англ. версии он брал файл E:/eng/1.jpg а при выборе русской версии он брал E:/rus/1.jpg и при установке копировал этот файл в папку одну и туже. Всмысле в папку на пример install он устанавливал 1.jpg либо русский либо английский.
Автор: Cover_Story
Дата сообщения: 18.11.2007 13:57
Всем доброго!
Можно ли с помощью программы Inno Setup сделать скрипт который бы архивировал файл затем архив копировался на рабочий стол. Т. е. процес обратный инсталляции.
Спасибо
Автор: Alex Zaguzin
Дата сообщения: 18.11.2007 13:59
Cover_Story - не совсем понятно. Можешь яснее написать?
Автор: Cover_Story
Дата сообщения: 18.11.2007 18:26
У меня есть база данных на стороне клиента мне нужно сделать так чтобы клиент не лазил во всяких Program Files. А запустил ехе'шник который сформировал бы ему архив этой базы и скопировал бы ее на рабочий стол чтобы потом клиент смог бы ее слить мне по электронной почте.
Автор: Sergey_AV
Дата сообщения: 18.11.2007 18:36
Cover_Story

Цитата:
запустил ехе'шник который сформировал бы ему архив этой базы и скопировал бы ее на рабочий стол чтобы потом клиент смог бы ее слить мне по электронной почте.

Это элементарно делается средствами того же WinRar, например, для этого Inno Setup не нужен . Это ж все равно, что "из пушки по комарам" .
Автор: Cover_Story
Дата сообщения: 19.11.2007 08:04
Согласен, но все упирается в единый стиль и использование единой программы.
Помогите пожалуйста!
Автор: Sergey_AV
Дата сообщения: 19.11.2007 08:18
Cover_Story

Цитата:
Согласен, но все упирается в единый стиль и использование единой программы.

???
Зачем?! Какой стиль? Не понимаю... Чем хуже ярлык на рабочем столе, после запуска которого рядом (где угодно) появляется архивированный файл с базой данных?
С помощью Inno Setup проще не получится, не для этого он...

Автор: Yamarus
Дата сообщения: 19.11.2007 15:17
А как 1. поменять содержимое в строке "О программе" в инссталле или ваще его убрать?
2. Когда на инсталле нажать правой кнопой мыши и залесь в комментарии нтам написано: This installation created by Inno Setup. Как это поменять или убрать?
Автор: Unc1e
Дата сообщения: 19.11.2007 15:28
Yamarus
1. [Code]
procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter;
end;
2. На сколько я знаю, для этого нужно редактировать файл Setup.e32 в папке с inno с помощью вьювера ресурсов (PE Explorer, ResHacker и т.д.) и уже в нем писать что тебе надо или вообще удалить. Но внесенные изменения будут переноситься на все твои инсталы.
Автор: Yamarus
Дата сообщения: 19.11.2007 15:32
Ура! Спасибо!

Добавлено:

Цитата:
1. [Code]
procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter;
end;


А оно убирает то окно или нет? если да, то как туда свой текст ввести?
Автор: Cryzer
Дата сообщения: 19.11.2007 17:07
Неужели никто не может помочь ответить на 3 вопроса?!
http://forum.ru-board.com/topic.cgi?forum=5&topic=24767&start=320#14
Автор: Chanka
Дата сообщения: 19.11.2007 17:46
Помогите, пожалуйста
Как в этом коде сделать, чтобы сообщения об удалении сохранений игры выдавалось только в том случае если в папке profiles присутствуют файлы или папки. А если папка пуста, то и сообщения быть не должно и папка profiles удалятся не должна.

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usDone then
begin
if DirExists(ExpandConstant('{app}\profiles')) then
begin
if MsgBox('Удалить сохраненные игры?',mbconfirmation, mb_yesno) = IDYES then
begin
DelTree(ExpandConstant('{app}'), True, True, True);
MsgBox('сообщение...', mbinformation, mb_ok);
end;
end;
end;
end;
Автор: sish68
Дата сообщения: 19.11.2007 18:25

Цитата:
Inno Setup 5.2.2
Русификатор от NightW0lf для версии 5.2.0

Ставлю руссификатор, вылетает "Ошибка MD5 Compil32.exe". Установка прекращена ! "
В чем может быть причина ?


Цитата:
Русская справка к версиям 5.0.xx
Скачать | зеркало || cкачать в .chm формате

Ставлю справку, оглавление слева выводится, а справа страница, как будто нет доступа к Интернету.
Может для этой версии IS они не подходят ?
Автор: Unc1e
Дата сообщения: 19.11.2007 18:28
Cryzer, если я правильно понял то:
2.[more]
var
res: integer;

function InitializeSetup(): Boolean;
begin
Exec('net', 'stop "Windows Time"', '', SW_HIDE, ewWaitUntilTerminated, res);
Result:= True;
end;

procedure DeinitializeSetup();
begin
Exec('net', 'start "Windows Time"', '', SW_HIDE, ewWaitUntilTerminated, res);
end;

Здесь стоп/старт службы Windows Time. Этот код можно записать в виде .bat файла:
net stop "Windows Time"[/more]
3. Скачай Русскую справку и прочитай раздел "Ненадежные файлы".
Автор: iTASmania_Inc
Дата сообщения: 19.11.2007 20:51
Chanka
[more=Можно так...]
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program

[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
begin
DelTree(ExpandConstant('{app}\profiles'), True, False, False)
if DirExists(ExpandConstant('{app}\profiles')) then
begin
if MsgBox('Удалить сохраненные игры?',mbconfirmation, mb_yesno) = IDYES then
begin
DelTree(ExpandConstant('{app}\profiles'), True, True, True)
MsgBox('Слишком пафосное сообщение...', mbinformation, mb_OK)
end
end
else
CreateDir(ExpandConstant('{app}\profiles'))
end
end;
[/more]
А папка profiles по умолчанию есть или создаётся только при создании профиля в игре?
Автор: Chanka
Дата сообщения: 19.11.2007 21:14
iTASmania_Inc
Спасибо.
P.S. чёт ты перестал появляться в мэйл агенте. Чё так сильно достают
Автор: Gerrr
Дата сообщения: 20.11.2007 09:25
Многоуважаемые подскажите пожалуйста. Как можно данные хранящиеся в ini-файле засосать в userpage. Я так понимаю это делается в разделе CODE, но как-то у меня не выходит красиво все сделать, а парсить своими силами инишник по-моему не совсем правильно.

Добавлено:
И еще один вопрос... Как можно добовлять определенные файлы реестра я прочитал, а вот как это сделать если файлы лежат в одном месте, но с разными именами(*.reg)?
Автор: Sergey_AV
Дата сообщения: 20.11.2007 11:09
Gerrr

Цитата:
И еще один вопрос... Как можно добовлять определенные файлы реестра я прочитал, а вот как это сделать если файлы лежат в одном месте, но с разными именами(*.reg)?

ISTool это делает элементарно.
Автор: Gerrr
Дата сообщения: 20.11.2007 11:19
С Ini-файлом разобрался - функции GetIniString мне для всего хватило...


Цитата:
ISTool это делает элементарно.


Извиняюсь за прямолинейность, а элементарно это как?
Автор: Sergey_AV
Дата сообщения: 20.11.2007 11:30
Gerrr

Цитата:
Извиняюсь за прямолинейность, а элементарно это как?

Project -> Import from file.
Автор: Gerrr
Дата сообщения: 20.11.2007 11:40
Я наверное не совсем полностью раскрыл свой вопрос. Мне необходимо сделать инсталяшку, которая будет хватать и добавлять в реестр любой файл с расширением .reg. Еще раз повторюсь как они будут называться я не знаю(знаю только что лежать будут в папке с интсаляшкой).
Поползал по документации нашел интереную функцию FindFirst, буду пробовать на ее основе что-нибудь своять... Но если у кого есть более красивое решение или какой-нибудь готовый уже вариант реализации буду очень признателен
Автор: noiseless
Дата сообщения: 20.11.2007 12:10
Gerrr
Так рег-файлы будут _внутри_ инсталлятора или будут просто лежать в папке с файлом установки и к нему никоим образом не относиться? Что-то общая идея не понятна, простите
Автор: Gerrr
Дата сообщения: 20.11.2007 13:16
Рег-файлы будут просто лежать в папке с файлом установки...

Добавлено:
Все по рег файлам вопрос тоже снимаю. У меня получилось переделать пример к функции FindFirst из русской документации под свои нужды. Всем спасибо
Автор: noiseless
Дата сообщения: 20.11.2007 13:59
Боюсь ошибиться, но может быть так (install.exe - имя файла инстала):

[Run]
Filename: "{win}\regedit.exe"; Parameters: "/s {code:iPath}\*.reg"

[Code]
var PathL: string;

function iPath(Param: String): String;
begin
PathL=ExtractFileDir('install.exe'));
Result:=PathL;
end;
Автор: Cryzer
Дата сообщения: 20.11.2007 18:02
Unc1e
Благодарю!
Автор: baw17
Дата сообщения: 21.11.2007 07:39
уважаемыс сограждане прошу помощи

мне надо внести в реестр значение REG_Binary следующего значения

"key"=hex:13,0a,95,46,57,91,cd,db,15,71,e1,b1,5a,cf,d5,ad,a3,ae,08,ea,ec,67,bf,\
7e,e7,92,b4,89,f5,e4,2c,1a,c4,70,90,96,da,32,82,7d,3f,1d,a3,9e,8a,96,7c,c2,\
04,d6,29,ee,75,20,4a,52,00,d7,48,85,bb,6e,19,dc,fd,de,95,06,2c,2a,b8,52,59,\
95,ee,54,73,27,31,d5,27,fd,d9,13,4f,26,fb,0e,7e,bc,f7,15,8b

как мне это сделать, ведь его надо перевести в шестнадцатиричное значение как указанно в справке но вот как это сделать не пойму

вот из справки "If the data type is binary, this is a sequence of hexadecimal bytes in the form: "00 ff 12 34". If the data type is none, this is ignored.
"

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

[Registry]
Root: HKCU; Subkey: "Software\SafelyRemove"; ValueType: binary; ValueName: "Key"; ValueData: "13 0a 95 46 57 91 cd db 15 71 e1 b1 5a cf d5 ad a3 ae 08 ea ec 67 bf 7e e7 92 b4 89 f5 e4 2c 1a c4 70 90 96 da 32 82 7d 3f 1d a3 9e 8a 96 7c c2 04 d6 29 ee 75 20 4a 52 00 d7 48 85 bb 6e 19 dc fd de 95 06 2c 2a b8 52 59 95 ee 54 73 27 31 d5 27 fd d9 13 4f 26 fb 0e 7e bc f7 15 8b"
Автор: viktor9
Дата сообщения: 21.11.2007 16:16
Такой вопрос как сделать чтобы после окончания установки запускался видео-файл???

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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