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

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

Автор: Lana4ka
Дата сообщения: 21.04.2009 08:49
Serega0675

Да-да, именно такая идея у меня и крутилась...Насчет (n=10) это Вы хорошо придумали, понравилось)))
Автор: nOobCrafter
Дата сообщения: 21.04.2009 10:27
Так может кто помч по поводу моего вопроса тут:
http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1480#7
в словаре нашел только если файл етсь то его заменяет, а мне надо наоборот.
И вот еще:

Код: [Files]
Source: "{app}\Some.file"; DestDir: "{app}\Backup_Files"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion external;
Автор: BondDaniil00
Дата сообщения: 21.04.2009 10:44
HELP!!!
Делаю проверку в реестре если Oracle не установлен, то нада просто скопировать установочные файлы в устанавливаемую папку как это сделать?
Автор: DeKaNszn
Дата сообщения: 21.04.2009 11:39
nOobCrafter

флаг onlyifdestfileexists означает, что файл будет скопирован, только если такой уже есть в папке назначения
Автор: nOobCrafter
Дата сообщения: 21.04.2009 11:46
DeKaNszn та мне как раз наоборот нао, что бы если файл есть то его не трогало...а если нету то записать
Автор: Igrikxxx
Дата сообщения: 21.04.2009 11:58
Artem1143

Да так делал непашет, я в другой скрипт хочу чтобы размер показывал ну кто поможет?
Вот в этом скрипте нужно чтобы размер показывал?

Цитата:
В это


Автор: Serega0675
Дата сообщения: 21.04.2009 11:59
nOobCrafter
onlyifdoesntexist - устанавливает файл только в случае, если такого файла в системе пользователя нет.

Добавлено:
Igrikxxx
попробуйте использовать секцию [more=LangOptions]

Код: [LangOptions]
DialogFontName= MS Shell Dlg
; здесь меняем размер шрифта
DialogFontSize=12
WelcomeFontName=Verdana
WelcomeFontSize=12
TitleFontName=Arial
TitleFontSize=29
CopyrightFontName=Arial
CopyrightFontSize=8
Автор: Igrikxxx
Дата сообщения: 21.04.2009 12:09
Serega0675

Цитата:
[LangOptions]


Я так понел это реализация инсталятора в большое окно, о где задать размер который нужен для установки и сколько места осталось на жестком диске? Спасибо заранее

Автор: BondDaniil00
Дата сообщения: 21.04.2009 12:10
ставил я этот-onlyifdoesntexist флаг на папку с файлами не срабатывает есть подозрение что если такие файлы есть да дискеD, а установка делается на диск С то проверка не осуществляется и флаг не срабатывает


Добавлено:
как задать условие в секции [Code] на необходимость копирования файлов??
Автор: noiseless
Дата сообщения: 21.04.2009 15:40
BondDaniil00

Цитата:
HELP!!!
Делаю проверку в реестре если Oracle не установлен, то нада просто скопировать установочные файлы в устанавливаемую папку как это сделать?

В какую устанавливаемую папку? Какие установочные файлы?
Если есть скрипт, то надо выкладывать. Поподробней надо излагать вопрос.

Цитата:
как задать условие в секции [Code] на необходимость копирования файлов??

Какое условие? Существует ли файл в определенной папке? Есть ли запись в реестре? Конкретней.
Автор: BondDaniil00
Дата сообщения: 21.04.2009 15:53
ВОТ ПОДРОБНЕЕ!!!!

Смысл в чем есть ПО которое работеет под Ораклом делаю инсталятор для установки этого ПО. Так вот перед установкой проверяю есть оракл на компе или нет если нет то нада скопировать установочные файлы ораклового клиента(установки он не требует) мое ПО будет работать если оракл установлен либо в одной папке будут находиться мое ПО и установочные файлы оракла которые мне и нада скопировать

function InitializeSetup(): Boolean;
var
ResultCode: Integer;
s, ResultStr:string;

begin
Result:=True;
If not RegValueExists(HKLM, 'SOFTWARE\ORACLE\KEY_XE', 'ORACLE_BASE')
then
begin
***** на этом этапе я думаю включить копирование установочных файлов Ораклого клиента
Result:=False;
end
else
begin
MsgBox('Ïðîãðàììà MY_PROGRAM óñïåøíî îáíàðóæåíà.' #13#13 'Óñòàíîâêà ïîëíîñòüþ àâòîìàòè÷åñêàÿ.', mbInformation, mb_Ok);
end;
END;
Автор: noiseless
Дата сообщения: 21.04.2009 16:25
BondDaniil00
Сами установочные файлы клиента Oracle планируете включить в свой дистрибутив?
У Вас идет проверка на наличие записи в реестре. Если не устанавливать Oracle, то ее и не будет, и тогда Ваше ПО не скопируется, пока не найдет эту запись в реестре.
Нужно условия на наличие файла. Например так:

function InitializeSetup(): Boolean;
begin
if not fileexists(ExpandConstant('{app}\BIN\SQORA32.DLL')) then
begin
***** на этом этапе я думаю включить копирование установочных файлов Ораклого клиента
Result:=False;
end
else
begin
MsgBox('Ïðîãðàììà MY_PROGRAM óñïåøíî îáíàðóæåíà.' #13#13 'Óñòàíîâêà ïîëíîñòüþ àâòîìàòè÷åñêàÿ.', mbInformation, mb_Ok);
end;
end;
Автор: Victor_Dobrov
Дата сообщения: 21.04.2009 18:45
Corona Skin & Check System Requirements (535 Кб) - обновил скин-расширение инсталлятора Inno Setup.
Изменения: исправлено множество ошибок, дополнены страницы мастера, списки компонентов/задач подерживают описания, лог установки стал подробнее, информация о системе показывается на фоне, медиаплеер проигрывает музыку, AVI-файлы, скринсэверы и рисунки, используются всплывающие подсказки XP-стиля.

htuos - спасибо за библиотеку ISHint.dll.
Автор: STALKER_HIGHLANDER
Дата сообщения: 21.04.2009 18:59
DeKaNszn

Спасибо большое.

Ещё один вопросец-каким образом сделать, чтобы проверка на значение (InstallVers = 1.0004) не проводилась, если проверка на определенную ветку в реестре отрицательна?

Вопрос ко всем спецам. Имеется около 2 Гб файлов, при максимальном сжатии (lzma/ultra) в инсталляторе выходит примерно 520 Мб. Не слишком ли рискованно паковать такой приличный объем максимальным сжатием? Может стоит сжать файлы в инсталляторе на среднем уровне, а потом сам инсталлятор запаковать по максимуму? Я так понимаю, что на распаковку большого объема данных, сжатых по максимуму, требуется только больше памяти.
Автор: DeKaNszn
Дата сообщения: 21.04.2009 20:01
STALKER_HIGHLANDER


Цитата:
Ещё один вопросец-каким образом сделать, чтобы проверка на значение (InstallVers = 1.0004) не проводилась, если проверка на определенную ветку в реестре отрицательна?


добавил в твой код:


Код: function InitializeSetup(): Boolean;
begin
Result:=True;
if not RegKeyExists(HKLM, 'SOFTWARE\GSC Game World\STALKER-SHOC')
then
begin
if MsgBox('Программа обнаружила, что у Вас не установлен "Сталкер", либо установлена не лицензионная копия.' #13#13 'Продолжить установку?', mbInformation, MB_YESNO) = idNo
then Result:=False;
end
else begin
RegQueryStringValue(HKLM, 'SOFTWARE\GSC Game World\STALKER-SHOC', 'InstallVers', tmp);
If (tmp<>'1.0004')
Then Result:=False;
end;

end;
Автор: spider91
Дата сообщения: 21.04.2009 22:25
Help

как сделать возможной отмену во время распаковки архивов и установки DirectX?
Автор: RazdorX
Дата сообщения: 21.04.2009 23:39
Возникла следующая проблема. Установщик создаёт на рабочем столе ярлык к exe файлу, но в его свойствах поле "Рабочая папка" по неизвестной мне причине пустое. Пробовал несколько раз, просил попробовать других, проблема не исчезает. Дело в том, что если в ярлыке не указана рабочая папка, приложение работает некорректно. Есть ли возможность заставить инсталлятор прописывать в ярлыке и рабочую папку тоже?
Автор: kombat 77
Дата сообщения: 21.04.2009 23:45
RazdorX

Цитата:
Есть ли возможность заставить инсталлятор прописывать в ярлыке и рабочую папку тоже?

Вот из Help'a

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MYPROG.EXE"; WorkingDir: "{app}"
Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"

WorkingDir: "{app}";
Автор: spider91
Дата сообщения: 21.04.2009 23:49
Help

как сделать возможной отмену во время распаковки архивов и установки DirectX?
Автор: STALKER_HIGHLANDER
Дата сообщения: 22.04.2009 03:06
DeKaNszn

Спасибо за оперативный ответ.
Автор: mikutu
Дата сообщения: 22.04.2009 06:48
А можно у подсказок создаваемых при помощи ISHint.dll изменять background и цвет текста? Или он может стандартные цвета подсказок в Windows?
Автор: Victor_Dobrov
Дата сообщения: 22.04.2009 08:52
mikutu Можно. [more=Вот способ.]

Код: procedure HintSetRaram(hControl:THandle; BackColor,FrameColor:Longint; FontName:PChar; FontSize:integer); external 'HintSetRaram@files:ISHint.dll stdcall';
//устанавливает шрифт для выводимого текста и заголовка, цвет фона и рамки хинта
//BackColor - цвет фона (по умолчанию $E3FFFF), если BackColor<0, то не меняется
//FrameColor - цвет рамки (по умолчанию $000000), если FrameColor<0, то не меняется
//FontName - название шрифта, которым будут выводится текст и заголовок (по умолчанию Tahoma),
// если FontName='', то не меняется
//FontSize - высота шрифта в пикелях (по умолчанию 13), если FontSize<=0, то не меняется
//
//FontName и FontSize дествуют и на заголовок, и на текст подсказки

procedure HintSetTextParam(hControl:THandle; Text:PChar; TextColor:Longint; Italic,Underline:boolean); external 'HintSetTextParam@files:ISHint.dll stdcall';
//устанавливает параметры текста хинта
//Text - текст подсказки, если Text='', то текст не менеяется
//TextColor - цвет текста подсказки, если TextColor=-1, то не меняется
//Italic - наклонный или нет
//Underline - подчеркнутый или нет

procedure HintSetTitleParam(hControl:THandle; Title:PChar; TitleColor:Longint; Italic,Underline:boolean); external 'HintSetTitleParam@files:ISHint.dll stdcall';
//устанавливает параметры заголовка хинта
//Title - заголовок подсказки, если Title='', то заголовок не менеяется (т.е. если его не было, то и не будет)
//TextColor - цвет текста заголовка, если TextColor=-1, то не меняется
//Italic - наклонный или нет
//Underline - подчеркнутый или нет
Автор: BondDaniil00
Дата сообщения: 22.04.2009 09:08
noiseless

Цитата:
noiseless

Либо мы друг друга либо я чето не понял либо обно их двух

Вопрос в том как мне скопировать файлы в случае отрицательного результата проверки реестра???





Автор: noiseless
Дата сообщения: 22.04.2009 10:38
BondDaniil00
Тогда вот:

function InitializeSetup(): Boolean;
begin
if not RegKeyExists(HKLM, 'Software\Oracle') then result:=true
else
result:=false;
end;
Автор: mikutu
Дата сообщения: 22.04.2009 10:54
<b>Victor_Dobrov</b>
Спасибо. Буду разбираться.
Автор: htuos
Дата сообщения: 22.04.2009 11:04
Victor_Dobrov
а что ты старую версию dll-ки использовал?
и вот к этому

Код: // из-за ошибки в ISHint.dll в классическом хинте устанавливается меньшая ширина, текст либо переносится по слову, либо обрезается
Автор: BondDaniil00
Дата сообщения: 22.04.2009 11:10
noiseless

Хорошо, проверка на ключ есть как теперь вслучае возврата отрицательного результата
дать команду на копирование файлов
Автор: noiseless
Дата сообщения: 22.04.2009 11:36
BondDaniil00
Например так:

[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Check: CheckReg \\файл(ы), которые надо копировать при необнаружении записи
Source: "A\MYFILE.TXT"; DestDir: "{app}"

[Code]

function CheckReg(): Boolean;
begin
if not RegKeyExists(HKLM, 'Software\Oracle') then result:=true
else
result:=false;
end;
Автор: mikutu
Дата сообщения: 22.04.2009 11:38
Victor_Dobrov
Попробывал что вы посоветовали и изменил в файле Corona_kernel.iss во всех записях HintSetTextParam цвет на $D70000 (красный), т.е. так
HintSetTextParam(StatusMemo.Handle, StatusMemo.Hint, $D70000, false, false)
но после компиляции ни чего не изменяется и текст в подсказках так и выводится черным цветом .
Автор: htuos
Дата сообщения: 22.04.2009 12:09
mikutu
найди в Corona_kernel.iss процедуру NowHint и последней строчкой в нее добавь HintSetTextParam(Handle, '', $D70000, false, false); тогда увидишь разницу. а так ты поменял подсказку только для StatusMemo

ЗЫ скачай сборник скриптов из шапки, там вроде пример есть

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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