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

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

Автор: ComradG
Дата сообщения: 13.07.2008 18:01
Genri, спасибо за хелп! Подправил dll и таперича мусор не остается. Кстати, если обидел Victor Dobrov, то приношу извинения.
Да, и еще. Понимаю, что и все же, я написал еще один плагин, который позволяет обходиться без препроцессора и переправил баги в Corona Skin (лично для себя); однако, чтобы выложить здесь все это требуется разрешение Victor Dobrov, а для другого - жесткий тест. Ко всему прочему, хочу заявить о разработке проекта "Золотые топики Inno" - что-то наподобие руководства от Kindly, так что присылайте скрипты (подписанные с указанной темой - на ящике стоит бот) мне на мыло grishanz@rambler.ru Не забывайте подписываться. Руководство, надеюсь, можно будет разместить здесь, на форуме.
Автор: boss911
Дата сообщения: 13.07.2008 19:28
Почему секция [Run] с препроцессором не срабатывает в том случае, если скрипт (*.iss) в момент компиляции лежал не в той папке, в которой лежат исходные файлы для компиляции? Возможно, ли это поправить?
Автор: CrackMe
Дата сообщения: 13.07.2008 20:39
Привет всем, хочу установить альтернативный taskmgr.exe вместо стандартногов папку {sys}, но с возможностью востановить из '{sys}\taskmgr.exe.bak'. Код из руковдства Киндли как я понял не подходит, файл можно заменить с помощью строики 'Flags: allowunsafefiles', но как его обратно востановить так, чтобы sfc не донимла вопросами пользователя? Подскажите код. Заранее спасибо.
Автор: meating
Дата сообщения: 14.07.2008 00:14
Помогите пожалуйста подправить скрипт. Делаю маппак для сервера, необходимо сделать так, чтобы юзер не мог выбирать директорию распаковки карт...

Цитата:
DisableDirPage=yes
DefaultDirName={reg:HKLM\Software\Game,InstallPath}

Проблема в том, что если в реестре ничего нету (тоесть клиент игры не поставлен), то появляется ошибка:

Цитата:
Внутренняя ошибка: An attempt was made to expand the "app" constant before it was initialized

Как сделать, чтобы появлялось цивильное сообщение (например: у вас нету клиента игры, исталяция карт невозможна).
Автор: CrackMe
Дата сообщения: 14.07.2008 00:40
meating

Код: DefaultDirName={reg:HKLM\Software\Game,InstallPath|Твой путь}
Автор: serg_aka_lain
Дата сообщения: 14.07.2008 00:53
meating

Так [more]
[_Code]
function InitializeSetup(): Boolean;
begin
if not RegValueExists(HKLM, 'Software\Game','InstallPath') then
begin
SuppressibleMsgBox('цивильное сообщение (например: у вас нету клиента игры, исталяция карт невозможна).', MbCriticalError, Mb_Ok, Mb_Ok);
Result := False;
Exit;
end;
Result := True;
end;

[/more]


Автор: boss911
Дата сообщения: 14.07.2008 01:20
Прокомментируйте, плиз, время поджимает.
Автор: Victor_Dobrov
Дата сообщения: 14.07.2008 01:54
ComradG
Цитата:
я написал еще один плагин, который позволяет обходиться без препроцессора и переправил баги в Corona Skin, но чтобы выложить, требуется разрешение Victor Dobrov

Проект совершенно открыт и общедоступен, выкладывайте.

P.S. хотелось бы получить ваш список багов в Corona Skin!
P.P.S. все замечания по скрипту я устранял сразу, кто-нибудь может указать, что ещё там не работает?
Автор: GRom V
Дата сообщения: 14.07.2008 02:12
Подскажите плизз кто нить как создать иконку для висты (GameExplorer) через GameUXLegacyGDFs.dll ?
Автор: Sandy Ann
Дата сообщения: 14.07.2008 02:25
А мне кто-нибудь поможет?
Автор: nOobCrafter
Дата сообщения: 14.07.2008 10:23
2 serg_aka_lain Там во время второй установки выскакиевает апшиочка и в дальнейших случаях инстала получаю часть файлов в рабочей директории, а часть в уже переименованной %).. Вот такая вот штука
Пути и названия папок взяты для примера, там может быть не диск С:\, а что нитьб другое..просто так проще увидеть куда и как прописывать адрес
Автор: bull3t
Дата сообщения: 14.07.2008 16:18
подскажите пожалуйста.
я сделал тихую инсталляцию для Postgre SQL(все ключи в текстовом файле). но мне надо чтобы при инсталляции выводилось окно с вводом пароля и имени юзера. а введенные данные записывались в файл с ключами к Postgre.
я сделал форму в IS Form Designer и как-то должен ее привязать. но как - понятия не имею. может были какие-то подобные случаи или просто подскажете?

заранее спасибо.
Автор: Diawer
Дата сообщения: 14.07.2008 16:30
Помогите реализовать такую идею, все наверное делают установку каких нибудь дополнительных программ нужных допустим для правильной работы игры на странице с выбором создания значка на Рабочем столе, типа “Установить Game Spy” пишется в секции [Tasks].
Идея в том, чтобы в строке “Установить Game Spy” сделать “Установить Game Spy - описание”, слово “описание” подсвечивалось, допустим, синим цветом, как ссылка на вебсайт и была активна, нажав на неё появлялось окно желательно формы Inno Setup, а точнее такое же как “InfoBeforeFile=readme.txt” соответственно описание программы “Game Spy” но с одной кнопкой “Назад” или ”Закрыть”, после нажатия на которую переходит опять на страницу с выбором создания значка на Рабочем столе.
Автор: ComradG
Дата сообщения: 14.07.2008 17:20
Отвечаю всем, кто писал мне на ящик. Во-первых, что за ламерский вопрос: как сделать так, чтобы инсталлы всегда компилились на русском? Алма-Ата, в самом деле! Для тех, кто так и не удосужился прочитать справку к программе, которая, к слову, уже давно довольно неплохо переведена (см.шапку), повторяю: 1)В папке с программой находим файл Default.isl и помещаем его в папку Languages; 2)Переименовываем его в English.isl; 3) Из той же папки перемещаем в основной каталог программы файл Russian.isl и переименовываем его в Default.isl. Вот, собственно, и все. Если же хочется сделать инсталл с несколькими языками, то смотрите хелп, там все написано. От себя могу лишь добавить, что секцию [Language] (и не только ее) лучше юзать в купе с секцией [CustomMessages]. Почему так? Допустим, вам нужно сделать так, чтобы при выборе какого-то языка (если вы задумали мультиязычный инсталлер) высвечивались разные комментарии к ярлыкам программы, т.е.:

[Icons]
Name: "{group}\PE Explorer"; Filename: "{app}\pexplorer.exe"; WorkingDir: "{app}"; Comment: "{cm:Comment1}"
Name: "{group}\{cm:Help}"; Filename: "{app}\pexplorer.chm"; WorkingDir: "{app}"; Comment: "{cm:Comment2}"
Name: "{group}\{cm:UninstallProgram,PE Explorer}"; Filename: "{uninstallexe}"; Comment: "{cm:Comment3}"
Name: "{userdesktop}\PE Explorer"; Filename: "{app}\pexplorer.exe"; WorkingDir: "{app}"; Tasks: "desktopicon"; Comment: "{cm:Comment1}"
Name: "{sendto}\PE Explorer"; Filename: "{app}\pexplorer.exe"; Tasks: "sendto"; WorkingDir: "{app}"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\PE Explorer"; Filename: "{app}\pexplorer.exe"; Tasks: "quicklaunchicon"; WorkingDir: "{app}"; Comment: "{cm:Comment1}"

[CustomMessages]
Help=PE Explorer Help
UninstallProgram=Uninstall %1
Comment1=PE Explorer
Comment2=PE Explorer Help
Comment3=Uninstall PE Explorer
ru.Help=Файл справки PE Explorer
ru.UninstallProgram=Деинсталлировать %1
ru.Comment1=PE Explorer
ru.Comment2=Файл справки PE Explorer
ru.Comment3=Деинсталлировать PE Explorer

Словом, эксперементируйте, зарабатывайте экспириенс.
По поводу стоит ли юзать UninsHs? Не знаю, может и стоит, но лично я не пробовал. Обычно в свои скрипты я не включаю возможность функции Repair и Modify, ограничиваясь лишь Uninstall. Правда, в плагине собственного сочинения эта функция имеется (как и обещал, скоро выложу его здесь, на форуме). Но если кому надо, попробуйте:

[Setup]
AppModifyPath="{app}\unins000.exe" /modify=1 /LOG

кажись так. Говорю же, не пользуюсь я такими вещами!
Вроде, все.
По поводу руководства Kindly. В отличии от него свое руководство, о котором говорилось вчера, на AutoPlay Media Studio 6.0.5.0 я писать не собираюсь - это будет оригинальная оболочка БД скриптов инно, написанная на си. Кстати, помимо скриптов инно, там будут еще пара интересных вещей. Короче, ждите и пишите - без вас проект не состоится.
Автор: GRom V
Дата сообщения: 15.07.2008 02:11

Цитата:
Подскажите плизз кто нить как создать иконку для висты (GameExplorer) через GameUXLegacyGDFs.dll ?

Рас никто не может ответить на мой вопрос, тогда может кто поскажет?!
в GameUXLegacyGDFs.dll находятся множество идентификаторов для разных игр.
как указать (зная идентификатор) для GameUXLegacyGDFs.dll ......
Вообщем например
С:\Games\GameUXLegacyGDFs.dll - как указать для этой длл идентификатор например {123-123-123} ???
Автор: Kindly
Дата сообщения: 15.07.2008 08:52
ComradG - я когда-то тоже "ждал" в личку примеры и скрипты, но так и не дождался, была только переписка по некоторым вопросам. Если будет возможным, добавь примеры из моего последнего руководства в свое, какие посчитаешь нужными. Мой проект закрыт, даже для себя добавил только в базу около десяти примеров
Автор: nOobCrafter
Дата сообщения: 15.07.2008 09:11
Так может кто помоч на счет мого вопроса?

Цитата:
ДДдааа, чем дальше в лес тем более знаешь) Спс все так как надо. Теперь попробую всеэто дело совместить))))
Гхым.. захотел сделать что бы [more=все это дело срабатывало по галочке (таску)][Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: {app}; BeforeInstall: CreateBackup

[Tasks]
Name: arc; Description: "Create backup"

[Code]
var
ArcDir: String;

type
TSHFileOpStruct = record
Wnd: HWND;
wFunc: UINT;
pFrom: PChar;
pTo: PChar;
fFlags: Word; // FILEOP_FLAGS;
fAnyOperationsAborted: BOOL;
hNameMappings: HWND; // Pointer;
lpszProgressTitle: PChar; { only used if FOF_SIMPLEPROGRESS }
end;

const

FO_MOVE = $0001;
FO_COPY = $0002;
FO_DELETE = $0003;
FO_RENAME = $0004;
FOF_MULTIDESTFILES = $0001;
FOF_CONFIRMMOUSE = $0002;
FOF_SILENT = $0004;
FOF_RENAMEONCOLLISION = $0008;
FOF_NOCONFIRMATION = $0010;
FOF_WANTMAPPINGHANDLE = $0020;
FOF_ALLOWUNDO = $0040;
FOF_FILESONLY = $0080;
FOF_SIMPLEPROGRESS = $0100;
FOF_NOCONFIRMMKDIR = $0200;
FOF_NOERRORUI = $0400;


function SHFileOperation(const lpFileOp: TSHFileOpStruct):Integer;
external 'SHFileOperation@shell32.dll stdcall';

function BackupDir(const fromDir, toDir: string; IsMove: Boolean): Boolean;
var
fos: TSHFileOpStruct;
_fromDir, _toDir: string;
SR: TFindRec;
res: Boolean;
begin
ForceDirectories(toDir);
if IsMove then
fos.wFunc := FO_MOVE else
fos.wFunc := FO_COPY;
fos.fFlags := FOF_FILESONLY or FOF_SILENT or
FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
_fromDir:= AddBackslash(fromDir);
_toDir := AddBackslash(toDir);
if (Length(fromDir) = Length(_fromDir)) then
begin
res:= FindFirst(_fromDir + '*', SR);
try
while res do
begin
if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then
begin
if SR.Attributes = FILE_ATTRIBUTE_DIRECTORY then
begin
_fromDir:= _fromDir + SR.Name + #0#0;
_toDir := _toDir + #0#0;
fos.pFrom := PChar(_fromDir);
fos.pTo := PChar(_toDir);
end else
begin
_fromDir:= _fromDir + SR.Name + #0#0;
_toDir := _toDir + SR.Name + #0#0;
fos.pFrom := PChar(_fromDir);
fos.pTo := PChar(_toDir);
end;
Result := (0 = ShFileOperation(fos));
_fromDir:= ExtractFilePath(_fromDir);
_toDir:= ExtractFilePath(_toDir);
end;
res := FindNext(SR);
end;
finally
FindClose(SR);
end;
end else
begin
_fromDir:= RemoveBackslashUnlessRoot(_fromDir) + #0#0;
_toDir := RemoveBackslashUnlessRoot(_toDir) + #0#0;
fos.pFrom := PChar(_fromDir);
fos.pTo := PChar(_toDir);
Result := (0 = ShFileOperation(fos));
end;
end;

function RenameDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
_fromDir, _toDir: string;
begin
_fromDir:= RemoveBackslashUnlessRoot(fromDir) + #0#0;
_toDir := RemoveBackslashUnlessRoot(toDir) + #0#0;
fos.wFunc := FO_RENAME;
fos.fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or
FOF_SILENT or FOF_NOCONFIRMATION;
fos.pFrom := PChar(_fromDir);
fos.pTo := PChar(_toDir);
Result := (0 = ShFileOperation(fos));
end;

procedure CreateBackup();
var
SrcFile, DestFile: string;
begin
if IsTaskSelected('arc') then
begin
BackupDir(ExpandConstant('{app}\123'), 'C:\123_old', False);
RenameDir(ExpandConstant('{app}'), ExpandConstant('{app}' + ' -' + GetDateTimeString('dd/mm/yyyy hh:nn:ss ', '-', '-') + '\'));
end;
end; [/more], в итоге ерунда получается((. В чем тут может быть трабл?..

Там во время второй установки выскакиевает апшиочка и в дальнейших случаях инстала получаю часть файлов в рабочей директории, а часть в уже переименованной %).. Вот такая вот штука
Автор: Unc1e
Дата сообщения: 15.07.2008 13:21
GRom V, так Виста сама должна добавить игру в WGE если информация об игре есть в GameUXLegacyGDFs.dll. Только это произойдет после первого запуска и игры.
Автор: bull3t
Дата сообщения: 15.07.2008 17:40
ребят, скажите, аналог ф-ии StrToInt только для символов.
мне надо чтобы введенное в TEdite слово присваивалось переменной. ну и записывалось в файл
Автор: ComradG
Дата сообщения: 15.07.2008 18:32
Kindly, человечище, респект те за твой офигенный труд.

Добавлено:
Да, Kindly, может стусуемся и поднимем проект вместе?
Автор: Victor_Dobrov
Дата сообщения: 16.07.2008 05:37
ComradG

Кроме руководства от Kindly ещё есть выборка полезных примеров, составленная fty.
От себя добавил в шапку коллекцию скриптов, собранных из сообщений этой и предыдущих частей топика.
Автор: Kindly
Дата сообщения: 16.07.2008 09:54
ComradG
Цитата:
может стусуемся и поднимем проект вместе?
а что, свой писать передумал ? Виктор выложил кучу полезных скриптов, ну у меня еще есть пару штук в загашнике. Еще просмотрю все и скину тебе в личку. Если будешь новую оболочку писать, то и поиск по БД реализуй и заодно программульку закинь, чтобы базу самому можно было править.
Автор: ShamaN
Дата сообщения: 16.07.2008 10:14
Подскажите как передать значение переменнной в секцию [Files] из [Соde].
Нужно что-то типа этого:


Код:
[Files]
Source: "C:file.txt"; DestDir: {PATH}; Flags: ignoreversion

[Соde]
function InitializeSetup(): Boolean;
begin
result:=true;
PATH:= 'c:\temp';
end;
Автор: noiseless
Дата сообщения: 16.07.2008 11:15
ShamaN
Возможно так:

[Files]
Source: "C:\file.txt"; DestDir: {code:iPath}; Flags: ignoreversion

[_Code]

function iPath(Param: String): String;
begin
Result:= 'c:\temp';
end;
Автор: ShamaN
Дата сообщения: 16.07.2008 11:33
noiseless
я так и сделал, но так путь надо получать для КАЖДОГО файла. как-то не очень рационально...
Автор: SotM
Дата сообщения: 16.07.2008 12:06

Цитата:
noiseless
я так и сделал, но так путь надо получать для КАЖДОГО файла

Ну да, так оно и есть. А как ты хотел? Твой пример почти тоже самое делает (получает путь для каждого файла) и что?
Автор: ShamaN
Дата сообщения: 16.07.2008 15:19
SotM
в моем примере (если бы он работал) один раз определялся бы путь установки, а потом для каждого файла просто подставлялось бы значение:

Код:
[Files]
Source: "C:\file.txt"; DestDir: {code:iPath}; Flags: ignoreversion
Source: "C:\file1.txt"; DestDir: {code:iPath}; Flags: ignoreversion
....
Source: "C:\fileN.txt"; DestDir: {code:iPath}; Flags: ignoreversion
Автор: Zloy_Gelud
Дата сообщения: 16.07.2008 18:11
ОФФ. Чтобы не использовать такое [_Code] обозначение секции Code, можно использовать теги [no]
Код: [no][/no]...[no][/no]
Автор: ComradG
Дата сообщения: 16.07.2008 18:33

Цитата:
Кроме руководства от Kindly ещё есть выборка полезных примеров, составленная fty.

Спасибо, учту. Если еще есть инфа, кинь плиз. Буду рад сотрудничесиву.

Цитата:
а что, свой писать передумал

Не передумал, просто предлагаю разрабатывать вместе - как говорится одна голова хорошо, а две - лучше.
Вообще, всем спасибо! Теперь буду работать над проектом еще больше. Если не затруднит, то присылайте свои идеи мне в личку.
P.S. Тестирование дополнений пока неокончено, так что извиняйте. Работать сразу над несколькими проектами все-таки тяжело, тем более в одному.
Автор: Sandy Ann
Дата сообщения: 16.07.2008 20:43
[more=HELP!!!]http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=260#5[/more]
Выручайте, очень надо!
Практически кто-нибудь делал деинсталлятор в стиле инсталлятора? Подскажите КАК???

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


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