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

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

Автор: Utygan
Дата сообщения: 28.03.2009 03:35
Raf_SE То есть если я пропишу в скрипте на примере своей игры {userdocs}, то всё что будет написано после скопируется в Мои документа ? Тогда получается что при создание репака мне нужно положить в папку с игрой и папку с самими сохранениями и настройками. а при указании пути к папке с игрой, после DestDir указать {userdocs} и папку с сохранениями и настройками, я которые я положил в папку с игрой ?? Я правильно понял ?? Если можно поподробней немножко объясни.
P.S. Почитал справку по твоему совету, но если честно, толком ничего не нашёл по интересующему меня вопросу. InnoSetup изучаю недавно совсем, так что строго не суди.Заранее спасибо.
Автор: Yoldosh
Дата сообщения: 28.03.2009 08:11
А как добавить чекбокс как на картинке дайте толька код чекбокса если можна
Автор: Raf_SE
Дата сообщения: 28.03.2009 08:58
DeKaNszn
Пасибо! То что нужно.
А мож ещё сделать второй вариант, где бы окно с ошибкой было в Гигабайтах? (мне для более объемной инсталяхи нужно)

[more=Я об этом окне] [/more]


Цитата:
То есть если я пропишу в скрипте на примере своей игры {userdocs}, то всё что будет написано после скопируется в Мои документа

Да.


Цитата:
Если можно поподробней немножко объясни

Экспериментируй, и все сам поймешь.
Автор: WinstAn70
Дата сообщения: 28.03.2009 13:26
Yoldosh
Пример вкладывали раньше смотри!
Автор: Kutsenko
Дата сообщения: 28.03.2009 14:12
2 SotM.
Не всё вырезать, а только маленькую часть из того всего. Пользоваться ней нехочу потому мне больше нравится классический вид инсталятора.
2 All.
Вопрос ещё остаётся актульным, так что кто может - помогите. Вопрос написан на предыдущей странице.
Автор: Raf_SE
Дата сообщения: 28.03.2009 14:24
Kutsenko
Даа, я бы тоже не отказался оторвать от туда небольшой кусок. А точнее, чтоб если прога уже установлена, то после запуска инсталлятора, и страницы приветствия, появлялась страничка с [more=вот этими функциями] [/more]
Автор: Kutsenko
Дата сообщения: 28.03.2009 14:52
2 Raf_SE
Мне бы тоже хотелось именно этого, но с такого большого скрипта вырезать только это слишком сложно для меня(.
Автор: DeKaNszn
Дата сообщения: 28.03.2009 17:41
Raf_SE

Цитата:
А мож ещё сделать второй вариант, где бы окно с ошибкой было в Гигабайтах? (мне для более объемной инсталяхи нужно)


[more=вот][no][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: Files\*; DestDir: {app}

[Code]
const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: String): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
ListBox: TListBox;
drives: DWORD;
i: integer;
begin
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;

drives:= GetLogicalDrives();
for i:= 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path:= chr(ord('A')+i)+':';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
ListBox.Items.Add(Path + ' - Всего: ' + FloatToStr(round(TotalMB)/1000) +
'Гб - Свободно: ' + FloatToStr(round(FreeMB)/1000) + 'Гб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < NeedSize then
begin
MsgBox('Для установки приложения необходимо '+ FloatToStr(round(NeedSize)/1000)+ ' MB,'#13+ 'а на выбранном Вами диске доступно только '+ FloatToStr(round(FreeMB)/1000)+' MB', mbCriticalError, MB_OK)
Result := False;
end;
end;
end; [/no][/more]
Автор: Yoldosh
Дата сообщения: 29.03.2009 07:01
как зделать штобы инсталятор не спрашивая автоматом добавьлял ярлык на десткоп ?
Автор: Snake193
Дата сообщения: 29.03.2009 14:49
Yoldosh
Так убери запрос о создании ярлыка из секции [Tasks].
Автор: kombat 77
Дата сообщения: 29.03.2009 19:01
Kutsenko, Raf_SE
зачем вырезать, думаю проще написать свой вариант т.к. каждый инсталл очень индивидуален и универсальности от кода ждать неприходится, к примеру, универсальной можно страницу сделать, а функции обработки кнопок индивидуальны, ну кроме "удалить", разве что.
Страница аля InstallShield


Автор: Yoldosh
Дата сообщения: 29.03.2009 19:13
kombat 77
можешь дать скрипт

Добавлено:
и кто нибудь знает как сменить название .bin файлов
Автор: kombat 77
Дата сообщения: 29.03.2009 20:17
Yoldosh

Цитата:
можешь дать скрипт

ссылка в ЛС
зы Реализована функция удаления, другие (изменить, исправить - нет).
Автор: Kutsenko
Дата сообщения: 29.03.2009 20:20
2 kombat 77
Кстати такой вариант тоже хороший, мне лично понравился, если можна - то скриптик в студию).
Автор: kombat 77
Дата сообщения: 29.03.2009 20:30
Yoldosh
для функции "исправить" [more=код]

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectDir then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

if PageID = wpReady then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

end;

[/more] по аналогии с Corona "перезаписать"


Добавлено:
Kutsenko
OK Тут
Автор: Kutsenko
Дата сообщения: 29.03.2009 20:54
Незнаю это только у меня или в остальных тоже: компиляция оригинального скрипта прошла норма, но вот когда уже програма почти установилась - прогресбар дошёл доконца, то у меня выдало ошибку и инстал завис(.
Автор: Raf_SE
Дата сообщения: 29.03.2009 21:11
Kutsenko
Ты не один, мне тоже [more=светит ошибку] [/more]

P.S.
А остальные кнопки никак не прикрутить? Ну ОЧЕНЬ бы хотелось иметь [more=эти функции] [/more].
Автор: kombat 77
Дата сообщения: 29.03.2009 21:46
Kutsenko, Raf_SE

Цитата:
то у меня выдало ошибку и инстал завис

[more=Так]

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectDir then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

if PageID = wpReady then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

end;

[/more]


Добавлено:

Работают все кнопки, на примере выбора компонентов(отмена выбора удаляет компонент)

[more=Собственно пример]

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.

[Languages]
Name: ENG; MessagesFile: compiler:Default.isl;
Name: RUS; MessagesFile: "compiler:Languages\Russian.isl";

[Messages]
RUS.NoUninstallWarning=Текущий выбор компонентов отличается от выбора предыдущей установки программы.%nПродолжить?

[CustomMessages]
ENG.PAGE_CAPTION=Welcome
RUS.PAGE_CAPTION=Добро пожаловать
ENG.PAGE_SUBCAPTION=Modify, repair, or remove the program.
RUS.PAGE_SUBCAPTION=Изменение, исправление или удаление программы.
ENG.PAGE_TEXT_CAPTION=Welcome to the "My Program" Setup Maintenance program.This program lets you modify the current installation.Click one of the options below.
RUS.PAGE_TEXT_CAPTION=Вас приветствует программа установки "My Program".Эта программа позволяет изменять параметры усановки.Нажмите одну из следующих кнопок.
ENG.PAGE_CAPT_1=Modify
RUS.PAGE_CAPT_1=Изменить
ENG.PAGE_SUBCAPT_1=Select new program features to add or select currently installed features to remove.
RUS.PAGE_SUBCAPT_1=Выбор новых компонентов программы для добавления или установленных компонентов - для удаления.
ENG.PAGE_CAPT_2=Repair
RUS.PAGE_CAPT_2=Исправить
ENG.PAGE_SUBCAPT_2=Reinstall all program features installed by the previous setup.
RUS.PAGE_SUBCAPT_2=Переустановка всех компонентов программы, установленных во время предыдущей установки.
ENG.PAGE_CAPT_3=Remove
RUS.PAGE_CAPT_3=Удалить
ENG.PAGE_SUBCAPT_3=Remove all installed features.
RUS.PAGE_SUBCAPT_3=Удаление всех установленных компонентов.

[Components]
Name: "lng"; Description: "Languages Files"; Types: full;
Name: "lng\english"; Description: "English"; Types: full;
Name: "lng\russian"; Description: "Russian"; Types: full;

[Files]
Source: compiler:WizModernSmallImage.bmp; Flags: dontcopy;
Source: Setup.dll; Flags: dontcopy;
Source: compiler:Default.isl; DestDir: {app}; Flags: ignoreversion; Components: lng\english;
Source: "compiler:\Languages\Russian.isl"; DestDir: {app}; Flags: ignoreversion; Components: lng\russian;

[Code]

function GetModuleHandle(lpModuleName: LongInt): LongInt;
external 'GetModuleHandleA@kernel32.dll stdcall';

function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
external 'ExtractIconA@shell32.dll stdcall';

function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
external 'DrawIconEx@user32.dll stdcall';

var
CheckRe, CheckRepair, CheckRemove: TNewRadioButton;

procedure CurPageChanged(CurPageID: Integer);
var
Panel: TPanel;
BitmapFileName: String;
BitmapImage: TBitmapImage;
Capt, SubCapt, WizCapt, TextRe, TextRepair, TextRemove: TNewStaticText;
Rect: TRect;
HIcon: LongInt;
begin
if CurPageID = wpWelcome then
begin
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') then
begin
ExtractTemporaryFile('Setup.dll');
WizardForm.WizardBitmapImage.Visible := False;
WizardForm.WelcomePage.Color := clBtnFace;
WizardForm.WelcomeLabel1.Visible := False;
WizardForm.WelcomeLabel2.Visible := False;

Panel := TPanel.Create(WizardForm);
Panel.Top := ScaleY(0);
Panel.Left := ScaleX(0);
Panel.Width := WizardForm.Width;
Panel.Height := ScaleY(58);
Panel.Color := clWhite;
Panel.Parent := WizardForm.WelcomePage;

BitmapFileName := ExpandConstant('{tmp}\WizModernSmallImage.bmp');
ExtractTemporaryFile(ExtractFileName(BitmapFileName));
BitmapImage := TBitmapImage.Create(Panel);
BitmapImage.Left := ScaleX(440);
BitmapImage.Top := ScaleY(1);
BitmapImage.AutoSize := True;
BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
BitmapImage.Parent := Panel;

Capt := TNewStaticText.Create(WizardForm);
Capt.Top := ScaleY(10);
Capt.Left := ScaleX(10);
Capt.Width := ScaleX(300);
Capt.Height := ScaleY(14);
Capt.AutoSize := False;
Capt.ShowAccelChar := False;
Capt.Color := clWhite;
Capt.Font.Style := [fsBold];
Capt.Caption := ExpandConstant('{cm:PAGE_CAPTION}');
Capt.Parent := WizardForm.WelcomePage;

SubCapt := TNewStaticText.Create(WizardForm);
SubCapt.Top := ScaleY(25);
SubCapt.Left := ScaleX(15);
SubCapt.Width := ScaleX(350);
SubCapt.Height := ScaleY(30);
SubCapt.AutoSize := False;
SubCapt.ShowAccelChar := False;
SubCapt.Color := clWhite;
SubCapt.Caption := ExpandConstant('{cm:PAGE_SUBCAPTION}');
SubCapt.Parent := WizardForm.WelcomePage;

WizCapt := TNewStaticText.Create(WizardForm);
WizCapt.Top := ScaleY(60);
WizCapt.Left := ScaleX(40);
WizCapt.Width := ScaleX(417);
WizCapt.Height := ScaleY(40);
WizCapt.AutoSize := False;
WizCapt.WordWrap := True;
WizCapt.Caption := ExpandConstant('{cm:PAGE_TEXT_CAPTION}');
WizCapt.Parent := WizardForm.WelcomePage;

CheckRe := TNewRadiobutton.Create(WizardForm);
CheckRe.Left := ScaleX(40);
CheckRe.Top := ScaleY(110)
CheckRe.Width := ScaleX(300);
CheckRe.Font.Style := [fsBold];
CheckRe.Caption := ExpandConstant('{cm:PAGE_CAPT_1}');
CheckRe.Parent := WizardForm.WelcomePage;

hIcon := ExtractIcon(GetModuleHandle(0), ExpandConstant('{tmp}\Setup.dll'), 0);
with TBitmapImage.Create(WizardForm) do
begin
Left := ScaleX(50);
Top := ScaleY(133);
Width := ScaleX(32);
Height := ScaleY(32);
with Bitmap do
begin
Width := ScaleX(32);
Height := ScaleY(32);
Rect.Right := ScaleX(32);
Rect.Bottom := ScaleY(32);
Rect.Left := ScaleX(0);
Rect.Top := ScaleY(0);
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end
Parent := WizardForm.WelcomePage;
end;

TextRe := TNewStaticText.Create(WizardForm);
TextRe.Left := ScaleX(90);
TextRe.Top := ScaleY(133);
TextRe.Width := ScaleX(367);
TextRe.Height := ScaleY(32);
TextRe.AutoSize := False;
TextRe.WordWrap := True;
TextRe.Caption := ExpandConstant('{cm:PAGE_SUBCAPT_1}');
TextRe.Parent := WizardForm.WelcomePage;

CheckRepair := TNewRadiobutton.Create(WizardForm);
CheckRepair.Left := ScaleX(40);
CheckRepair.Top := ScaleY(175);
CheckRepair.Width := ScaleX(300);
CheckRepair.Font.Style := [fsBold];
CheckRepair.Caption := ExpandConstant('{cm:PAGE_CAPT_2}');
CheckRepair.Parent := WizardForm.WelcomePage;

hIcon := ExtractIcon(GetModuleHandle(0), ExpandConstant('{tmp}\Setup.dll'), 1);
with TBitmapImage.Create(WizardForm) do
begin
Left := ScaleX(50);
Top := ScaleY(200);
Width := ScaleX(32);
Height := ScaleY(32);
with Bitmap do
begin
Width := ScaleX(32);
Height := ScaleY(32);
Rect.Right := ScaleX(32);
Rect.Bottom := ScaleY(32);
Rect.Left := ScaleX(0);
Rect.Top := ScaleY(0);
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end
Parent := WizardForm.WelcomePage;
end;

TextRepair := TNewStaticText.Create(WizardForm);
TextRepair.Left := ScaleX(90);
TextRepair.Top := ScaleY(200);
TextRepair.Width := ScaleX(367);
TextRepair.Height := ScaleY(32);
TextRepair.AutoSize := False;
TextRepair.WordWrap := True;
TextRepair.Caption := ExpandConstant('{cm:PAGE_SUBCAPT_2}');
TextRepair.Parent := WizardForm.WelcomePage;

CheckRemove := TNewRadiobutton.Create(WizardForm);
CheckRemove.Left := ScaleX(40);
CheckRemove.Top := ScaleY(242);
CheckRemove.Width := ScaleX(300);
CheckRemove.Font.Style := [fsBold];
CheckRemove.Caption := ExpandConstant('{cm:PAGE_CAPT_3}');
CheckRemove.Checked := True;
CheckRemove.Parent := WizardForm.WelcomePage;

hIcon := ExtractIcon(GetModuleHandle(0), ExpandConstant('{tmp}\Setup.dll'), 2);
with TBitmapImage.Create(WizardForm) do
begin
Left := ScaleX(50);
Top := ScaleY(267);
Width := ScaleX(32);
Height := ScaleY(32);
with Bitmap do
begin
Width := ScaleX(32);
Height := ScaleY(32);
Rect.Right := ScaleX(32);
Rect.Bottom := ScaleY(32);
Rect.Left := ScaleX(0);
Rect.Top := ScaleY(0);
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end
Parent := WizardForm.WelcomePage;
end;

TextRemove := TNewStaticText.Create(WizardForm);
TextRemove.Left := ScaleX(90);
TextRemove.Top := ScaleY(267);
TextRemove.Width := ScaleX(367);
TextRemove.Height := ScaleY(32);
TextRemove.AutoSize := False;
TextRemove.WordWrap := True;
TextRemove.Caption := ExpandConstant('{cm:PAGE_SUBCAPT_3}');
TextRemove.Parent := WizardForm.WelcomePage;
end;
end;

if CurPageID = wpSelectComponents then
WizardForm.ComponentsList.Top := ScaleY(44);
WizardForm.ComponentsList.Height := ScaleY(161);
WizardForm.TypesCombo.Hide;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectDir then
begin
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRe.Checked) = True then
Result := True;
end;

if PageID = wpSelectComponents then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

if PageID = wpReady then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRepair.Checked) = True then
Result := True;

end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := S + MemoDirInfo + NewLine + NewLine;
S := S + MemoComponentsInfo + NewLine;
Result := S;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') and (CheckRe.Checked) = True then
begin
if not IsComponentSelected('lng') then
DeleteFile(ExpandConstant('{app}\Default.isl'));
DeleteFile(ExpandConstant('{app}\Russian.isl'));
if IsComponentSelected('lng\english') then
if not IsComponentSelected('lng\russian') then
DeleteFile(ExpandConstant('{app}\Russian.isl'));
if IsComponentSelected('lng\russian') then
if not IsComponentSelected('lng\english') then
DeleteFile(ExpandConstant('{app}\Default.isl'));
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Str: String;
ErrorCode: Integer;
begin
Result := True;
if CurPageID = wpWelcome then
begin
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') then
begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'UninstallString', Str);
if CheckRemove.Checked = True then
begin
Str := RemoveQuotes(Str);
Exec(Str, '/silent', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
WizardForm.Close;
end;
end;
end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
if CurPageID = wpWelcome then
begin
if RegValueExists(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'Inno Setup: App Path') then
begin
if CheckRemove.Checked = True then
Confirm := False;
end;
end;
end;

[/more]


Автор: STALKER_HIGHLANDER
Дата сообщения: 30.03.2009 06:04

Подскажите пожалуйста, как в этом окне (и ему подобных, т.е. не основные окна инсталлятора) изменить размер и вид шрифта?


Возможно ли в окне выбора компонентов каким-либо образом изменить шрифт этих строк (например, сделать жирными и т.д.)?

Можно ли в инсталлере поменять местами страницу, отвечающую за секцию [Tasks], и страницу выбора компонентов?

Если ответы на эти вопросы есть где-то в справке или ФАК-ах, прошу прошения, но ничего похожего вроде не обнаружил.

Заранее спасибо.
Автор: Dimbay
Дата сообщения: 30.03.2009 20:00
Такой вопрос: можно создать ярлык на рабочем столе для пустой папки,которая находится на одном из дисков? Для экзешников всё получается,а так нет...
Автор: kombat 77
Дата сообщения: 30.03.2009 20:08
Dimbay

Цитата:
создать ярлык на рабочем столе для пустой папки

Можно, к примеру [more=так]
[Icons]
Name: "{userdesktop}\My Folder"; Filename: "{app}"; Flags: foldershortcut;[/more],
или указать другое расположение.
Автор: msatmb
Дата сообщения: 30.03.2009 20:43
В последнее время инсталляторы стали запаковывать при помощи некоего инструмента, который добавляет в заголовок файла MZP и что-то там. Поискал по инету, нашел что можно распаковать при помощи Mazepa или Marzipan. Сколько не искал так и не нашел. Может кто-то подскажет?
Извините, если офф-топ

Добавлено:
kombat 77
спасибо за код Очень интересный
Автор: Congenialnost
Дата сообщения: 31.03.2009 15:25
Подскажите, пожалуйста, как реализовать следующее:
-Инсталляционный пакет содержит исполняемый файл основного приложения и среду выполнения для этого приложения. Как организовать в Inno Setup, чтобы перед установкой основного приложения, инсталлятор проверил наличие на ПК конечного Пользователя среды выполнения для этого приложения, и далее если версия среды выполнения установлена в ОС конечного Пользователя и она не ниже той, что имеется в инсталляционном пакете - начиналась инсталляция основного программного продукта. А в случае если среда выполнения не установлена, либо версия установленной среды ниже предлагаемой инсталляционным пакетом, произошла инициация установки среды выполнения, а затем после успешной установки последней, продолжилась инсталляция основного программного продукта.

Заранее благодарен всем, кто даст дельные советы.
Автор: Serega0675
Дата сообщения: 31.03.2009 18:27
kombat 77
Спасибо за скрипт, молодец одним словом!
Автор: noiseless
Дата сообщения: 01.04.2009 07:02
Congenialnost
Как определять версию среды выполнения? Где она ее указывает (реестр, файл в корневой директории)?
Автор: Prince_Tails
Дата сообщения: 01.04.2009 18:30
Срочно!!! Как мне совместить эти 2 кода...
[more=этот код]
procedure InitializeWizard();
var
PageNameLabel, PageDescriptionLabel, WLabel1, WLabel2,FLabel1, FLabel2: TLabel;
SplashImage: TBitmapImage;
SplashForm: TForm;
SplashFileName: String;
I : Integer;

begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(14);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(62);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clRed;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(85);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(236);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clRed;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

begin
with WizardForm do
begin
WizardSmallBitmapImage.Left:=WizardForm.WizardSmallBitmapImage.Left-480
WizardSmallBitmapImage.Width:=540
PageNameLabel.Width:=290
PageDescriptionLabel.Width:=280
end
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clBlack;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clBlack;
Transparent := True;
Parent := WizardForm.MainPanel;
with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;
begin

SplashFileName := ExpandConstant('{tmp}\splash.bmp');
ExtractTemporaryFile(ExtractFileName(SplashFileName));

SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;
ClientWidth := 500;
ClientHeight := 299;
end;

SplashImage := TBitmapImage.Create(SplashForm);
with SplashImage do
begin
Bitmap.LoadFromFile(SplashFileName);
Stretch := true;
Align := alClient;
Parent := SplashForm;
end;

with SplashForm do
begin
Show;
for I := 1 to 1 do
begin
Repaint;

Sleep(2500);
end;
Close;
Free;
end;
end;

begin
WizardForm.FilenameLabel.Hide
end;

end;
end;[/more]
с этим [more=кодом]procedure InitializeWizard();
var
WLabel1, WLabel2,
FLabel1, FLabel2: TLabel;
begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clRed;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clRed;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clRed;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clRed;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := 'Программа установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;
end;[/more]
Автор: DeKaNszn
Дата сообщения: 01.04.2009 21:27
Prince_Tails

[more=пробуй][no]procedure InitializeWizard();
var
PageNameLabel, PageDescriptionLabel, WLabel1, WLabel2,FLabel1, FLabel2: TLabel;
SplashImage: TBitmapImage;
SplashForm: TForm;
SplashFileName: String;
I : Integer;
WLabel1, WLabel2, FLabel1, FLabel2: TLabel;

begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(14);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(62);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clRed;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(85);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(236);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clRed;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clRed;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clRed;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := 'Программа установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;

begin
with WizardForm do
begin
WizardSmallBitmapImage.Left:=WizardForm.WizardSmallBitmapImage.Left-480
WizardSmallBitmapImage.Width:=540
PageNameLabel.Width:=290
PageDescriptionLabel.Width:=280
end
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clBlack;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clBlack;
Transparent := True;
Parent := WizardForm.MainPanel;
with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;
begin

SplashFileName := ExpandConstant('{tmp}\splash.bmp');
ExtractTemporaryFile(ExtractFileName(SplashFileName));

SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;
ClientWidth := 500;
ClientHeight := 299;
end;

SplashImage := TBitmapImage.Create(SplashForm);
with SplashImage do
begin
Bitmap.LoadFromFile(SplashFileName);
Stretch := true;
Align := alClient;
Parent := SplashForm;
end;

with SplashForm do
begin
Show;
for I := 1 to 1 do
begin
Repaint;

Sleep(2500);
end;
Close;
Free;
end;
end;

begin
WizardForm.FilenameLabel.Hide
end;

end;
end; [/no][/more]
Автор: Yoldosh
Дата сообщения: 02.04.2009 08:08
кто нибкдь знает скрипт как на картинке и подскажите можнали сменить имя файла .bin
Автор: Qarma
Дата сообщения: 02.04.2009 10:05
Кто поможет....в общем надо прописать путь C:\Documents and Settings\!!!СДЕСЬ ИМЯ ПОЛЬЗОВАТЕЛЯ!!!!\Local Settings\Application Data\Rockstar Games\GTA IV


Как реализовать копирование в эту папку ??

Добавлено:
Всё, понял, помощи не надо
Автор: Prince_Tails
Дата сообщения: 02.04.2009 15:49
Спасибо!!! Помогло

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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