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

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

Автор: NightW0lf
Дата сообщения: 02.01.2007 22:50
Genri

Цитата:
-- добавь флаг:
Flags: ignoreversion

Спасибо работает!
И все таки это вообще возможно:

Цитата:
Чтобы деинсталлятор от программы обновления мог удалить обновленный файл и папку с резервной копией и если это возможно вернуть оригинальный файл из папки с резервной копией на место.



Добавлено:
И если нетрудно то скачаю тот пример инсталлятора в катаром все реализовано.
Автор: Mihagod
Дата сообщения: 04.01.2007 16:29
NightWolf, спасибо за подсказку!

Если не затруднит ещё один вопросик (пока ), как у ярлыка задать рабочую папку? Например "C:\Program Files\папка такая то". Тоесть рабочая папка была указана всегда та, куда устанавливается приложение, вот. А то пустая строка почему то.

Спасибо за внимание!
Автор: maxdddca123
Дата сообщения: 04.01.2007 16:37
Mihagod
Дописываешь в скрипте к ярлыку WorkingDir: {app}; если рабочая папки это папки куда устанавливается приложение.
Автор: Serge2005
Дата сообщения: 04.01.2007 17:04
Выложите, пожалуйста, расширенные руководства, справки итп, а то по ссылкам в шапке не качаются.

Возможно ли реализовать нечто вроде: при устоновке скрипт проверит наличие нескольких файлов, если один из них существует, то путь к нему записать в ини файл как параметр... Если нет, то удалить некоторые параметры ини файла?
(*собственно для этого и нужна расширенная справка...*)
Автор: omals
Дата сообщения: 04.01.2007 18:30
в секции
[RUN]
нужно прописать запуск не реальной екзешки, а просто
выполнение какойто моей функции
ну типа
[RUN]
Filename: {code:MyFunction};

в
[Code]
function MyFunction(S:STRING):STRING;
var
ErrorCode: Integer;
begin
//тут например
begin
ShellExec('open', ExpandConstant('{app}\myURL.url'),'', '', SW_SHOW, ewNoWait, ErrorCode);
//открываю дефолтным браузером URL
end;

но при компиляции получим обшибку, шо нет реального файла для выполнения
можно тупо перед end прописать
Result:=rundll32.exe
в результате выполнится нужный мне код, а затем без пользы запуститься rundll32.exe
но это некрасиво и неправильно както


Автор: Igimon
Дата сообщения: 04.01.2007 21:08
Подскажите пожалуйста как сделать так чтобы во время выполнения команды из секции [RUN] строка прогресс бара не стояла на месте а быстро двигалась вперед-назад?
P.S. Речь не идет об корректном отображении строки прогресс бара, речь идет только о визуальном движении прогресс бара и создание наглядной видимости того что инсталлятор продолжает работать.
Автор: AtotIK
Дата сообщения: 05.01.2007 16:29
2 NightW0lf

Цитата:
Теперь мне надо чтобы инсталлятор заменил оригинальный файл (на пример - myprog1.exe) на такой же, но только обновленный, и во время установки в директории программы была сразу создана папка "Backup_Files" (т.е. у пользователя инсталлятор не должен спрашивать ни название папки, ни где размещать ее, а нужно чтобы инсталлятор создавал все сам автоматически).


[Files]
Source: "{app}\Some.file"; DestDir: "{app}\Backup_Files"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion external;

Скину счас тебе весь код в личку...разбирайся...Тока эти файлы ни кому не давай.
Автор: Chanka
Дата сообщения: 05.01.2007 17:32

Цитата:
Тока эти файлы ни кому не давай.


Жадные вы. Не получите от меня линк на пропатченный инсталлятор.
Автор: NightW0lf
Дата сообщения: 05.01.2007 17:40
Chanka

Цитата:
Не получите от меня линк на пропатченный инсталлятор.

А какой и для чего пропатченный инсталлятор?
AtotIK
Спасибо за код буду разбираться!
Автор: AtotIK
Дата сообщения: 05.01.2007 18:42
2 Chanka

Это как в ситуации с SerGEAnt'ом...Авторское право стоит на меня.

2 NightW0lf

Да я пошутил...В принципе, если найдёшь в коде чё-нить интерестное, то можешь отдать куски Kindly.

-----------------------------------------

Кста...Вот пример написания выбора установки (например - русской версии игрушки) через RadioButton:

[Files]
;Основные файлы
Source: "Work\*.*"; DestDir: "{app}"; Flags: ignoreversion overwritereadonly
;Файлы русификатора игры
Source: "Russian\*.*"; DestDir: "{app}"; Check: Russian; Flags: ignoreversion overwritereadonly

[Code]
var
RussianBtn, EnglishBtn: TRadioButton;
ResultCode: Boolean;

procedure CreateTheWizardPages;
var
LangPage: TWizardPage;
begin
LangPage:=CreateCustomPage(wpSelectComponents, 'Language', 'Select Game Language');
RussianBtn:=TRadioButton.Create(LangPage);
RussianBtn.Top:=ScaleY(30);
RussianBtn.Width:=LangPage.SurfaceWidth;
RussianBtn.Height:=ScaleY(17);
RussianBtn.Caption:='Russian';
RussianBtn.Checked:=GetPreviousData('Russian', '1') = '1';
RussianBtn.Parent:=LangPage.Surface;

EnglishBtn:=TRadioButton.Create(LangPage);
EnglishBtn.Top:=RussianBtn.Top + ScaleY(30);
EnglishBtn.Width:=LangPage.SurfaceWidth;
EnglishBtn.Height:=ScaleY(17);
EnglishBtn.Caption:='English';
EnglishBtn.Checked:=GetPreviousData('English', '0') = '1';
EnglishBtn.Parent:=LangPage.Surface;
end;

procedure InitializeWizard();
begin
CreateTheWizardPages;
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
SetPreviousData(PreviousDataKey, 'Russian', IntToStr(Ord(RussianBtn.Checked)));
SetPreviousData(PreviousDataKey, 'English', IntToStr(Ord(EnglishBtn.Checked)));
end;

function Russian: Boolean;
begin
Result:=RussianBtn.Checked;
end;

function English: Boolean;
begin
Result:=EnglishBtn.Checked;
end;

Функция "English" здесь дана так просто, для виду...Типа если выберешь "Russian", то устанавливаются файлы русификатора, а если нет, то просто ставятся основные файлы. Короче, разобирётесь.

Добавлено:

Да, вместо wpSelectComponents можно написать любую страницу и поверх её создастся страница с выбором языка.
Автор: Chanka
Дата сообщения: 05.01.2007 19:28
NightW0lf,

Цитата:
А какой и для чего пропатченный инсталлятор?


Эта версия 5.1.9. и в нее встроены функции фоновая картинка в формате jpg, а также слайд-шоу также в формате jpg. Причём в скрипте никакого кода писать не надо просто кладёте рядом с вашим инсталлом папку Res и кладёте туда картинки, а также список файлов для слайд-шоу. У кого есть игрушки от 1с меня поймут.
Автор: NightW0lf
Дата сообщения: 05.01.2007 19:51
Chanka

Цитата:
Эта версия 5.1.9. и в нее встроены функции фоновая картинка в формате jpg, а также слайд-шоу также в формате jpg. Причём в скрипте никакого кода писать не надо просто кладёте рядом с вашим инсталлом папку Res и кладёте туда картинки, а также список файлов для слайд-шоу. У кого есть игрушки от 1с меня поймут.

Круто! все время хотел, чтобы такая фишка была по умолчанию в Inno Setup!
Сможешь залить?

БУДУ ОЧЕНЬ ПРИЗНАТЕЛЕН!
Автор: Genri
Дата сообщения: 05.01.2007 20:00
Раз уж речь зашла о возможности бэкапа...
Мне задавали вопрос по поводу перемещения папок (не копирования) средствами Inno Setup. Как перемещать средствами Inno не знаю, но средствами самой операционки можно.
[more=Здесь ]
Код:
;***************************************************************;
;****************** SHFileOperation.iss ************************;
;***************************************************************;
;* Include this file in project. Example:
;* #include "SHFileOperation.iss"
;***************************************************************;
;************************ 1 ************************************;
;* function CopyDir(const fromDir, toDir: string): Boolean;
;* Example 1 (without <fromDir> trailing backslash):
;* CopyDir('C:\TMP\MyApp', 'C:\TMP\Backup');
;* Result: C:\TMP\Backup\MyApp\..all <MyApp> subdirs and files
;* Example 2 (with <fromDir> trailing backslash):
;* CopyDir('C:\TMP\MyApp\', 'C:\TMP\Backup');
;* Result: C:\TMP\Backup\..all <MyApp> subdirs and files
;***************************************************************;
;************************ 2 ************************************;
;* function MoveDir(const fromDir, toDir: string): Boolean;
;* Example 1 (without <fromDir> trailing backslash):
;* MoveDir('C:\TMP\MyApp', 'C:\TMP\Backup');
;* Result: C:\TMP\Backup\MyApp\..all <MyApp> subdirs and files
;* Example 2 (with <fromDir> trailing backslash):
;* MoveDir('C:\TMP\MyApp\', 'C:\TMP\Backup');
;* Result: C:\TMP\Backup\..all <MyApp> subdirs and files
;***************************************************************;
;************************ 3 ************************************;
;* function DelDir(dir: string; toRecycle: Boolean): Boolean;
;* If <toRecycle> is True, <dir> deleted in Recycle Bin.
;***************************************************************;
;************************ 4 ************************************;
;* function RenameDir(const fromDir, toDir: string): Boolean;
;***************************************************************;
;***************************************************************;
;***************************************************************;


Код:
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
// use in wFunc
{ $EXTERNALSYM FO_MOVE }
FO_MOVE = $0001;
{ $EXTERNALSYM FO_COPY }
FO_COPY = $0002;
{ $EXTERNALSYM FO_DELETE }
FO_DELETE = $0003;
{ $EXTERNALSYM FO_RENAME }
FO_RENAME = $0004;
// use in fFlags
{ $EXTERNALSYM FOF_MULTIDESTFILES }
FOF_MULTIDESTFILES = $0001;
{ $EXTERNALSYM FOF_CONFIRMMOUSE }
FOF_CONFIRMMOUSE = $0002;
{ $EXTERNALSYM FOF_SILENT }
FOF_SILENT = $0004; { don't create progress/report }
{ $EXTERNALSYM FOF_RENAMEONCOLLISION }
FOF_RENAMEONCOLLISION = $0008;
{ $EXTERNALSYM FOF_NOCONFIRMATION }
FOF_NOCONFIRMATION = $0010; { Don't prompt the user. }
{ $EXTERNALSYM FOF_WANTMAPPINGHANDLE }
FOF_WANTMAPPINGHANDLE = $0020; { Fill in
SHFILEOPSTRUCT.hNameMappings
Must be freed using
SHFreeNameMappings }
{ $EXTERNALSYM FOF_ALLOWUNDO }
FOF_ALLOWUNDO = $0040;
{ $EXTERNALSYM FOF_FILESONLY }
FOF_FILESONLY = $0080; { on *.*, do only files }
{ $EXTERNALSYM FOF_SIMPLEPROGRESS }
FOF_SIMPLEPROGRESS = $0100; { means don't show names of files }
{ $EXTERNALSYM FOF_NOCONFIRMMKDIR }
FOF_NOCONFIRMMKDIR = $0200; { don't confirm making any
needed dirs }
{ $EXTERNALSYM FOF_NOERRORUI }
FOF_NOERRORUI = $0400; { don't put up error UI }


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 MoveDir(const fromDir, toDir: string): Boolean;
begin
Result := BackupDir(fromDir, toDir, True);
end;

{****************************************************************}
function CopyDir(const fromDir, toDir: string): Boolean;
begin
Result := BackupDir(fromDir, toDir, False);
end;

{****************************************************************}
function DelDir(dir: string; toRecycle: Boolean): Boolean;
var
fos: TSHFileOpStruct;
_dir: string;
begin
_dir:= RemoveBackslashUnlessRoot(dir) + #0#0;
fos.wFunc := FO_DELETE;
fos.fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
if toRecycle then
fos.fFlags := fos.fFlags or FOF_ALLOWUNDO;
fos.pFrom := PChar(_dir);
Result := (0 = ShFileOperation(fos));
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;
{****************************************************************}
{****************************************************************}
{****************************************************************}
Автор: Kindly
Дата сообщения: 06.01.2007 13:03
Chanka

Цитата:
Эта версия 5.1.9. и в нее встроены функции фоновая картинка в формате jpg, а также слайд-шоу также в формате jpg.

А я то думал, как 1С-овцы так делают, вроде соответствующего кода в CompiledСode.bin не обнаружил. Я так полагаю, что эта "фирменная" фишка 1С. В принципе оно мне не нужно, но хотелось бы иметь сам патч в отдельности.

Добавлено:
Genri
А бекап возможен при сохранении резервных копий с подпапками, наподобие технологии PatchWise?
Автор: Genri
Дата сообщения: 06.01.2007 13:24
Kindly

Цитата:
А бекап возможен при сохранении резервных копий с подпапками
-- Не уверен, что правильно понял вопрос, но функции CopyDir и MoveDir копируют/перемещают все содержимое, включая файлы и подпапки.

omals

Цитата:
но при компиляции получим обшибку, шо нет реального файла для выполнения
-- не совсем понятно, почему надо именно в секции [Run], а не, например, в процедуре CurStepChanged. Но если очень надо, можно использовать следующий прием:
Код:
[Run]
Filename: file.nil; StatusMsg: Open URL...; Flags: skipifdoesntexist; Check: NeedRun(); BeforeInstall: BefRun()

[Code]
function NeedRun(): Boolean;
begin
MsgBox('Hello Check', mbInformation, MB_OK);
Result:= True;
end;

procedure BefRun();
begin
MsgBox('Hello Before', mbInformation, MB_OK);
end;
Автор: maxdddca123
Дата сообщения: 06.01.2007 13:33
Genri

Цитата:
maxdddca123 -- ты используешь FindWindowByClassName.
("А ты вот этот плакатик внимательно читал?" (С)Жиглов):
Цитата:function FindWindowByClassName(const ClassName: String): HWND;
Описание:
Находит заголовок для верхнеуровневого окна, имя класса которого указано в заданной строке. Эта функция не ищет дочерние окна и не выполняет чувствительный к регистру (case-sensitive) поиск. Возвращает 0, если ни одного окна не найдено.


Цитата:
Получается вообще нельзя закрыть доченрее окно средствами Inno?


Вот наша недавняя беседа, но Вы так и не ответили на мой вопрос... Повторяю
Автор: NightW0lf
Дата сообщения: 06.01.2007 15:43
ОГРОМНОЕ СПАСИБО ВСЕМ, КТО МНЕ ПОМОГАЛ В СОЗДАНИИ "БЕКАПОВ"!
Все работает, НО еще один маленький вопросик Вам:
Проблема заключается в том, что после удаления - файлы из папки "Install_Rus\Backup" перемещаются обратно это ВСЕ правильно, НО так же после удаления ОСТАЮТСЯ эти папки "Install_Rus\Backup" при том еще в папке "Backup" остается оригинальный файл, а мне бы хотелось, чтобы этих папок НЕ было (Install_Rus\Backup\Some_name.exe) после удаления.

Заранее благодарю!
Автор: JKSerGEAnt
Дата сообщения: 06.01.2007 16:10
NightW0lf
DeleteFile(ExpandConstant('{app}')+'\Install_Rus\Backup\Some_name.exe')
RemoveDir(ExpandConstant('{app}')+'\Install_Rus\Backup')
RemoveDir(ExpandConstant('{app}')+'\Install_Rus)

p.s. молодец, склонировал до последней капли - хоть бы что-нибудь свое придумал

Добавлено:
Genri
Еще раз спасибо за SHFileOperation.iss - теперь инсталл стал выглядеть просто идеально
Автор: NightW0lf
Дата сообщения: 06.01.2007 16:23
JKSerGEAnt
СПИСОБО!
Автор: Genri
Дата сообщения: 06.01.2007 17:24
maxdddca123
Цитата:
Получается вообще нельзя закрыть доченрее окно средствами Inno?
-- Мне такие средства Inno не известны.

NightW0lf
Цитата:
НО так же после удаления ОСТАЮТСЯ эти папки "Install_Rus\Backup" при том еще в папке "Backup" остается оригинальный файл
-- А в чем проблема? Помимо функции в SHFileOperation.iss, Inno имеет несколько встроенных функций для удаления папок. Например:
Код:
#include "SHFileOperation.iss"

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DisableProgramGroupPage=yes

[Files]
Source: Files\*.*; DestDir: {app}; Flags: ignoreversion recursesubdirs

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
CopyDir(ExpandConstant('{app}\'),ExpandConstant('{app}\Backup'));
// или
// MoveDir(ExpandConstant('{app}\'),ExpandConstant('{app}\Backup'));
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
// RemoveDir удалит только, если папка пустая
RemoveDir(ExpandConstant('{app}\Backup'));
// DelTree использовать не рекомендуется,
// так как будут удалены все вложенные папки!
// DelTree(ExpandConstant('{app}\Backup'), True, True, True);
end;
end;
Автор: JKSerGEAnt
Дата сообщения: 06.01.2007 18:31
Genri

Цитата:
Да вобщем-то не за что. Я ведь сам ничего не придумал

да это понятно, но ведь поиск всего этого тоже время отнимает
Автор: Sampron
Дата сообщения: 06.01.2007 20:23
Народ а кто-нибудь шарит в installshield?
Автор: JKSerGEAnt
Дата сообщения: 06.01.2007 20:53
Sampron
Ты малость темой ошибся
Автор: NightW0lf
Дата сообщения: 06.01.2007 21:33
А кто нибудь знает как можно сделать вывод сообщение ("Вы действительно хотите продолжить установку" ДА\НЕТ если "Да" то запускается устанока) перед установкой?
Автор: Genri
Дата сообщения: 07.01.2007 00:44
В файл SHFileOperation.iss, можно добавить код, который можно взять [more=здесь]
Код:
function FilesMaskOperation(const fromDir, toDir, fileMask: string;
FileOp: Integer; EmptyDirRemove: Boolean; toRecycle: Boolean): Boolean;
var
fos: TSHFileOpStruct;
_fromDir, _toDir: string;
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: string;
begin
APath := AddBackslash(fromDir);
FindResult := FindFirst(APath + fileMask, FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
Case FileOp of
FO_COPY:
begin
fos.wFunc := FO_COPY;
end;
FO_MOVE:
begin
fos.wFunc := FO_MOVE;
end;
FO_DELETE:
begin
fos.wFunc := FO_DELETE;
if toRecycle then fos.fFlags := fos.fFlags or FOF_ALLOWUNDO;
end;
FO_RENAME:
begin
fos.wFunc := FO_RENAME;
end;
else
;
end;
fos.fFlags := fos.fFlags or FOF_FILESONLY or FOF_SILENT or
FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
_fromDir:= APath + FSR.Name + #0#0;
_toDir:= AddBackslash(toDir) + FSR.Name + #0#0;
ForceDirectories(ExtractFilePath(_toDir));
fos.pFrom := PChar(_fromDir);
fos.pTo := PChar(_toDir);
Result := (0 = ShFileOperation(fos));
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and
not ((DSR.Name = '.') or (DSR.Name = '..')) then
{Recursion} FilesMaskOperation(APath + DSR.Name,
AddBackslash(toDir) + DSR.Name,
fileMask, FileOp, EmptyDirRemove, toRecycle);
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
if EmptyDirRemove then RemoveDir(APath);
end;
end;

function CopyFiles(const fromDir, toDir, fileMask: string): Boolean;
begin
Result := FilesMaskOperation(fromDir, toDir, fileMask,
FO_COPY, False, False);
end;

function MoveFiles(const fromDir, toDir, fileMask: string): Boolean;
begin
Result := FilesMaskOperation(fromDir, toDir, fileMask,
FO_MOVE, True, False);
end;

function DelFiles(const fromDir, fileMask: string; toRecycle: Boolean ): Boolean;
begin
Result := FilesMaskOperation(fromDir, '', fileMask,
FO_DELETE, True, toRecycle);
end;
Автор: Sampron
Дата сообщения: 07.01.2007 11:41

Цитата:
А кто нибудь знает как можно сделать вывод сообщение ("Вы действительно хотите продолжить установку" ДА\НЕТ если "Да" то запускается устанока) перед установкой?

[Setup]
DisableStartupPrompt=no
Автор: NightW0lf
Дата сообщения: 07.01.2007 12:14
Sampron

Цитата:
[Setup]
DisableStartupPrompt=no

Спасибо!

Автор: yurri
Дата сообщения: 07.01.2007 17:25
Здравствуйте!

Подскажите чайнику ответ на вопрос:
можно ли из Inno провести запись и соответственно удаление
из базы данных (в частности mySQL).
Если да то что для этого нужно.

Заранее спасибо.
Автор: feandy
Дата сообщения: 07.01.2007 19:50
Мля ребята.
Давайте вопросы по существу.
А так получается, я чайник, как решить, результат тебе 1000 баков, а те кто решили... Х на Р...
Автор: NightW0lf
Дата сообщения: 07.01.2007 23:30
AtotIK
У тебя в скрипте я нашел вот это:

Код:
procedure HideInstallPath();
begin
WizardForm.StatusLabel.Caption:= 'Создание резервных копий файлов...';
end;

procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible:= True;
WizardForm.StatusLabel.Caption:= 'Распаковка файлов русификации...';
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


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