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

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

Автор: nik1967
Дата сообщения: 06.08.2013 10:00
999Kay666,
[more=Держи]
Код: [Setup]
AppName=Mafia Mod
AppVerName=0.0
DefaultDirName={sd}\MafiaGame
;DisableWelcomePage=yes- эта команда работает начиная с версии 5.5.3, НО в данном случае она не нужна (страница отключена с остальными в коде ниже)
DisableFinishedPage=yes
Uninstallable=no
UninstallDisplayName=no
DirExistsWarning=no

[Components]
Name: textures1; Description: Mod1;
Name: textures2; Description: Mod2;
Name: textures3; Description: Mod3;

[_Code]
procedure InitializeWizard();
begin
WizardForm.Caption :='Пример.'
WizardForm.SelectDirBitmapImage.Hide;
WizardForm.SelectDirLabel.Hide;
WizardForm.SelectDirBrowseLabel.Hide;
WizardForm.DiskSpaceLabel.Hide;
WizardForm.DirEdit.Top := ScaleY(0);
WizardForm.DirBrowseButton.Top := ScaleY(0);
WizardForm.ComponentsList.Top := ScaleY(30);
WizardForm.ComponentsList.Height := ScaleY(195);
WizardForm.ComponentsList.Parent := WizardForm.SelectDirPage;
end;
// пропуск страниц инсталлятора
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 1) or (PageID = 7) or(PageID = 10) then
Result:= True;
end;
//доступна/недоступна NextButton в зависимости от выбора компонента
procedure CompClick(Sender: TObject);
begin
WizardForm.NextButton.Enabled:= false = (WizardSelectedComponents(False) = '');
end;
//отмена установки без вопросов
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
end;
//изменить имя кнопки NextButton
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectDir: begin
with WizardForm.ComponentsList do begin
OnClickCheck:= @CompClick;
CompClick(nil);
end;
WizardForm.NextButton.Caption:='Установить';
end;
end;
end;
Автор: Gnom3
Дата сообщения: 06.08.2013 11:47

Цитата:
выдает ошибку после лого GPU-Z.

sjwrec пытался я тебе объяснить, что неверным путем ты идешь, да бестолку, видимо. В общем, тестируйте - библиотека возвращает первую цифру версии директа - 8, 9, 10, 11 - без подверсий. У кого косо отработает - пишите версию ос, версию директа и название видеокарты.
Ссылка.
Автор: trolltmn
Дата сообщения: 06.08.2013 11:53
Доброго времени суток господа. Вопрос к знающим коллегам.

Сижу бодаю Inno Script с целью написать красивый инсталлятор. Для успешной работы установленных компонентов мне необходимо что бы в систему ставились библиотеки Dokan.

Реализацию проверки сделал благодаря примерам выложенным в теме:
// секция проверки установки библиотек Dokan
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
DokanInstalled : Boolean;
Result1 : Boolean;
res: integer;
begin

DokanInstalled := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if DokanInstalled =true then
begin
Result := true;
end;
if DokanInstalled = false then
begin
DokanInstalled := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if DokanInstalled =true then
begin
Result := true;
end;

if DokanInstalled =false then
begin
Result1 := MsgBox('Правильная работа сборки требует Dokan Lybraries. Хотите установить Dokan Lybraries сейчас?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end
else
begin
Result:=false;
Exec(ExpandConstant('{src}\DokanInstall_0.6.0'), '/S', ExpandConstant('{src}'), SW_SHOW, ewWaitUntilTerminated, Res)
end;
end;
end;
end;
// конец секции проверки установки библиотек Dokan

Смущает только что при успешной установке библиотек инсталлятор схлапывается, можно ли реализовать установку библиотек перед инсталлятором если они отсутствуют, но без схлапывания полученого инсталлятора, что бы после тихой установке библиотек, запустился сам инсталлятор без повторного запуска.
Автор: Gnom3
Дата сообщения: 06.08.2013 12:34
trolltmn
Слишком много лишнего и ненужного. твой код:

Код: function InitializeSetup(): Boolean;
var
res: integer;
begin
Result := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if not Result then
begin
Result := MsgBox('Правильная работа сборки требует Dokan Lybraries. Хотите установить Dokan Lybraries сейчас?',
mbConfirmation, MB_YESNO) = idYes;
if Result then
Exec(ExpandConstant('{src}\DokanInstall_0.6.0'), '/S', ExpandConstant('{src}'), SW_SHOW, ewWaitUntilTerminated, Res)
end;
end;
Автор: vint56
Дата сообщения: 06.08.2013 12:39
Gnom3
Видеокарта NVIDIA® GeForce® GTX 560 DirectX11 а показывает 10 система windows 7 64 DirectX есть D3D11Install пишит что компонент присуствует в системе
Автор: trolltmn
Дата сообщения: 06.08.2013 12:42

Цитата:
Слишком много лишнего и ненужного. твой код:


спасибо огромное, а можно ли сам файл библиотек Dokan зашить в инсталлятор, и устанавливать из папки {tmp}?

И если несложно помогите еще в одном деле.

Использую слайдшоу, при запуске инсталлятора на секунду выскакивает синий фон, который потом заменяется картинкой используемой в слайдшоу. можно ли его победить? что бы он не выскакивал?
Автор: vint56
Дата сообщения: 06.08.2013 12:43
trolltmn {src} это что библеотека должна лежать возле setup
Автор: Gnom3
Дата сообщения: 06.08.2013 12:55
vint56 а так?



Добавлено:

Цитата:
Использую слайдшоу, при запуске инсталлятора на секунду выскакивает синий фон, который потом заменяется картинкой используемой в слайдшоу. можно ли его победить? что бы он не выскакивал?

Не видя кода, победить невозможно.
Автор: vint56
Дата сообщения: 06.08.2013 12:59
Gnom3
Автор: Gnom3
Дата сообщения: 06.08.2013 13:02
vint56
скрипт тоже нужно было поменять и заодно сделай win+r->dxdiag и заскринь версию директа, которую покажет.
Автор: trolltmn
Дата сообщения: 06.08.2013 13:02

Цитата:
Не видя кода, победить невозможно.


[more=листинг]
[Files]
; секция временных файлов
Source: Libs\isxbb.dll; DestDir: {tmp}; Flags: dontcopy
Source: wallp\img2.bmp; DestDir: {tmp}; Flags: dontcopy
//Это файлы для слайд-шоу (может быть больше)
Source: wallp\1.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\2.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\3.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\4.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\5.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\6.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\7.jpg; DestDir: {tmp}; Flags: dontcopy
Source: wallp\8.jpg; DestDir: {tmp}; Flags: dontcopy

[CustomMessages]
russian.FreeSpace=Доступно места на диске:
russian.NeedSpace=Требуется места на диске:
english.FreeSpace=Free space on disk:
english.NeedSpace=Need space on disk:

[Code]
var
WelcomeLabel1, WelcomeLabel2, FinishedLabel, FinishedHeadingLabel: TLabel;
PageNameLabel, PageDescriptionLabel: TLabel;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
FreeMB, TotalMB: Cardinal;
SizeStr: String;
SizeInt: Integer;
SymbolNumber: Integer;
MouseLabel,SiteLabel: TLabel;
ProgressLabel, SizeLabel: TLabel;

// секция проверки установки библиотек Dokan
function InitializeSetup(): Boolean;
var
res: integer;
begin
Result := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if not Result then
begin
Result := MsgBox('Правильная работа сборки требует Dokan Lybraries. Хотите установить Dokan Lybraries сейчас?',
mbConfirmation, MB_YESNO) = idYes;
if Result then
Exec(ExpandConstant('{src}\DokanInstall_0.6.0'), '/S', ExpandConstant('{src}'), SW_SHOW, ewWaitUntilTerminated, Res)
end;
end;
// конец секции проверки установки библиотек Dokan

const
BACKGROUND=6; // "5"-по центру, "6"-растянуто на весь экран, "1,2,3,4"-в разных углах экрана
TIMER=16;

function isxbb_AddImage(Image: PAnsiChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';
function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';
function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';
function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';

Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
SetLength(Result, Length(Result)-1);
End;

function GetSize(): Integer;
begin
SizeStr:= WizardForm.DiskSpaceLabel.Caption;
for SymbolNumber:= 97 to 122 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); //Находим все символы нижнего регистра и удаляем
while (Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr) > 0) do Delete(SizeStr, Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr),1); end; //Находим все символы верхнего регистра и удаляем
for SymbolNumber:= 192 to 255 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); end; //Находим все символы нижнего регистра и удаляем
while (Pos('.', SizeStr) > 0) do Delete(SizeStr, Pos('.', SizeStr), 1); //Удаляем точки
Delete(SizeStr, Pos(',', SizeStr), 5) //Удаляем дробную часть
Result:= StrToInt(Trim(SizeStr)); //Переводим в число
end;

function CompareNum(FirstNum, SecondNum: Integer): Boolean;
begin
if FirstNum < SecondNum then Result:= False else Result:= True;
end;

Function MbOrTb(Byte: Extended): String;
begin
if Byte < 1024 then Result:= NumToStr(Byte) + ' Мб' else
if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' Гб' else
Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' Тб'
end;

procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.koreanrandom.com/forum/topic/4372-410-270713-expromt-max-config-4-%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B8-%D0%BC%D0%BE%D0%B4%D0%BE%D0%B2-4-%D1%81%D1%82%D0%B8%D0%BB%D1%8F4-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D0%B0-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BE-%D0%B4/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;

procedure Progress();
var
size: integer;

begin
with WizardForm.ProgressGauge do
ProgressLabel.Caption:= IntToStr((Position-Min)/((Max - Min)/100)) + '%';
    FileSize(ExpandConstant(CurrentFileName), size);
    SizeLabel.Caption:= IntToStr(size) + ' bytes';
end;

procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clRed
end;

procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;

procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clGreen
end;

procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ') + MbOrTb(FreeMB)
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt)
if WizardForm.CurPageID = wpSelectDir then begin
WizardForm.NextButton.Enabled:= CompareNum(FreeMB, SizeInt)
end;
end;

procedure InitializeWizard();
begin
//секция слайд щоу
ExtractTemporaryFile('1.jpg'); //1.jpg-это фоновый рисунок, он показывается как в начале, так и в конце установки
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));

begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 55; //Размер рисунка
Width := 500; //
end;
with PageNameLabel do begin
Width := Width - 497; //Поставить здесь значения 0, если нужно вернуть текст
Left := Left + 497; //
end;
with PageDescriptionLabel do begin
Width := Width - 497; //Поставить здесь значения 0, если нужно вернуть текст
Left := Left + 497; //
end;
end;
end;
// конец слайд шоу

// секция кликабельной ссылки
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm

SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=10
SiteLabel.Top:=330
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='EXPROMT_MAX config'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
// конец кликабельной ссылки

// секция вычисления процентов установки
ProgressLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressLabel.Top := Top + Height + ScaleY(8);
ProgressLabel.Left:= Left + Width/2 - ScaleX(8);
ProgressLabel.AutoSize := True;
ProgressLabel.Parent := WizardForm.InstallingPage;
end;

SizeLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
SizeLabel.Top := Top + Height + ScaleY(8);
SizeLabel.Left:= Left;
SizeLabel.AutoSize := True;
SizeLabel.Parent := WizardForm.InstallingPage;
end;
// конец процентов вычисления
WizardForm.DiskSpaceLabel.Hide;
#ifdef NeedSize
SizeInt:= {#NeedSize}
#else
SizeInt:= GetSize;
#endif
ExtractTemporaryFile('img2.bmp');

WizardForm.WizardSmallBitmapImage.SetBounds(ScaleX(0), ScaleY(0), WizardForm.MainPanel.Width, WizardForm.MainPanel.Height);
WizardForm.WizardBitmapImage.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));

PageNameLabel:= TLabel.Create(WizardForm)
with WizardForm.PageNameLabel do
PageNameLabel.SetBounds(Left, Top, Width, Height);
PageNameLabel.Transparent:= True;
PageNameLabel.Font:= WizardForm.PageNameLabel.Font;
PageNameLabel.Font.Color:= clWhite; //цвет надписи
PageNameLabel.Parent:= WizardForm.MainPanel;

PageDescriptionLabel:= TLabel.Create(WizardForm)
with WizardForm.PageDescriptionLabel do
PageDescriptionLabel.SetBounds(Left, Top, Width, Height);
PageDescriptionLabel.Transparent:= True;
PageDescriptionLabel.Font:= WizardForm.PageDescriptionLabel.Font;
PageDescriptionLabel.Font.Color:= clWhite; //цвет надписи
PageDescriptionLabel.Parent:= WizardForm.MainPanel;

WelcomeLabel1:= TLabel.Create(WizardForm);
WelcomeLabel1.AutoSize:= False;
with WizardForm.WelcomeLabel1 do
WelcomeLabel1.SetBounds(Left, Top, Width, Height);
WelcomeLabel1.Font:= WizardForm.WelcomeLabel1.Font
WelcomeLabel1.Font.Color:= clWhite; //цвет надписи
WelcomeLabel1.Transparent:= True;
WelcomeLabel1.WordWrap:= true;
WelcomeLabel1.Caption:= WizardForm.WelcomeLabel1.Caption;
WelcomeLabel1.Parent:= WizardForm.WelcomePage

WelcomeLabel2:= TLabel.Create(WizardForm);
WelcomeLabel2.AutoSize:= False;
with WizardForm.WelcomeLabel2 do
WelcomeLabel2.SetBounds(Left, Top, Width, Height);
WelcomeLabel2.Font:= WizardForm.WelcomeLabel2.Font
WelcomeLabel2.Font.Color:= clWhite; //цвет надписи
WelcomeLabel2.Transparent:= True;
WelcomeLabel2.WordWrap:= true;
WelcomeLabel2.Caption:= WizardForm.WelcomeLabel2.Caption;
WelcomeLabel2.Parent:= WizardForm.WelcomePage

FinishedHeadingLabel:= TLabel.Create(WizardForm);
FinishedHeadingLabel.AutoSize:= False;
with WizardForm.FinishedHeadingLabel do
FinishedHeadingLabel.SetBounds(Left, Top, Width, Height);
FinishedHeadingLabel.Font:= WizardForm.FinishedHeadingLabel.Font
FinishedHeadingLabel.Font.Color:= clWhite; //цвет надписи
FinishedHeadingLabel.Transparent:= True;
FinishedHeadingLabel.WordWrap:= true;
FinishedHeadingLabel.Caption:= WizardForm.FinishedHeadingLabel.Caption;
FinishedHeadingLabel.Parent:= WizardForm.FinishedPage

FinishedLabel:= TLabel.Create(WizardForm);
FinishedLabel.AutoSize:= False;
with WizardForm.FinishedLabel do
FinishedLabel.SetBounds(Left, Top, Width, Height);
FinishedLabel.Font:= WizardForm.FinishedLabel.Font
FinishedLabel.Font.Color:= clWhite; //цвет надписи
FinishedLabel.Transparent:= True;
FinishedLabel.WordWrap:= true;
FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption;
FinishedLabel.Parent:= WizardForm.FinishedPage

WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
NeedSpaceLabel.SetBounds(ScaleX(0), ScaleY(198), ScaleX(209), ScaleY(13))
NeedSpaceLabel.Parent := WizardForm.SelectDirPage;
NeedSpaceLabel.Transparent:=true;

FreeSpaceLabel := TLabel.Create(WizardForm);
FreeSpaceLabel.SetBounds(ScaleX(0), ScaleY(216), ScaleX(209), ScaleY(13))
FreeSpaceLabel.Parent := WizardForm.SelectDirPage;
FreeSpaceLabel.Transparent:=true;

WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption;
if CurPageID = wpSelectDir then begin
GetFreeSpaceCaption(nil)
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall
then
begin
ExtractTemporaryFile('2.jpg'); //это файлы для слайд-шоу, их может быть и больше
ExtractTemporaryFile('3.jpg');
ExtractTemporaryFile('4.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BACKGROUND or TIMER);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
isxbb_StartTimer(3,BACKGROUND) //это таймер для слайд-шоу в секундах
end
else if CurStep=ssPostInstall then
isxbb_KillTimer(BACKGROUND);
begin
with WizardForm do
end
end;
[/more]


Цитата:
trolltmn {src} это что библеотека должна лежать возле setup


это я понимаю, но хотелось бы поместить DokanInstall_0.6.0.exe в тело инсталлятора, и запускать его из тела инсталлятора. ведь всегда найдется тот кто запустит забыв что у него библиотек нет. и на выходе получит ошибку. Не разобравшись начнет кричать о том что ничего не работает и все плохо.

Стараюсь учесть все аспекты

Автор: vint56
Дата сообщения: 06.08.2013 13:05
Gnom3 я все заменил показывает цифры теперь 47241664

Автор: Gnom3
Дата сообщения: 06.08.2013 13:12
trolltmn
залей куданить с файлами, поковыряюсь.
Автор: vint56
Дата сообщения: 06.08.2013 13:14
trolltmn
[Files]
Source: DokanInstall_0.6.0.exe; DestDir: {tmp}; Flags: ignoreversion

[code]
function InitializeSetup(): Boolean;
var
res: integer;
begin
if not FileExists(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe')) then ExtractTemporaryFile('DokanInstall_0.6.0.exe');
Result := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if not Result then
begin
Result := MsgBox('Правильная работа сборки требует Dokan Lybraries. Хотите установить Dokan Lybraries сейчас?',
mbConfirmation, MB_YESNO) = idYes;
if Result then
Exec(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe'), '/S', ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res)
end;
end;
Автор: Gnom3
Дата сообщения: 06.08.2013 13:22
vint56
не. DestDir: {tmp}; отработает уже в процессе установки, поэтому там нужно так:
[Files]
Source: DokanInstall_0.6.0.exe; Flags: dontcopy
и соответственно перед Exec распаковать. тоесть так:

Код: function InitializeSetup(): Boolean;
var
res: integer;
begin
if not FileExists(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe')) then ExtractTemporaryFile('DokanInstall_0.6.0.exe');
Result := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if not Result then
begin
Result := MsgBox('Правильная работа сборки требует Dokan Lybraries. Хотите установить Dokan Lybraries сейчас?',
mbConfirmation, MB_YESNO) = idYes;
if Result then
begin
ExtractTemporaryFile('DokanInstall_0.6.0.exe');
Exec(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe'), '/S', ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res);
end;
end;
end;
Автор: nik1967
Дата сообщения: 06.08.2013 13:29
Gnom3, зачем человека в заблуждение вводишь? Зачем два раза извлечение?

Код: if not FileExists(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe')) then ExtractTemporaryFile('DokanInstall_0.6.0.exe');
Автор: Gnom3
Дата сообщения: 06.08.2013 13:30
nik1967
упс, не разглядел


Код: function InitializeSetup(): Boolean;
var
res: integer;
begin
Result := RegKeyExists(HKLM,'SYSTEM\CurrentControlSet\Services\Dokan');
if not Result then
begin
Result := MsgBox('Правильная работа сборки требует Dokan Lybraries. Хотите установить Dokan Lybraries сейчас?',
mbConfirmation, MB_YESNO) = idYes;
if Result then
begin
if not FileExists(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe')) then ExtractTemporaryFile('DokanInstall_0.6.0.exe');
Exec(ExpandConstant('{tmp}\DokanInstall_0.6.0.exe'), '/S', ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res);
end;
end;
end;
Автор: trolltmn
Дата сообщения: 06.08.2013 13:35

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

http://yadi.sk/d/lUN-QpHD7cZRN


Цитата:
vint56
не. DestDir: {tmp}; отработает уже в процессе установки, поэтому там нужно так:


спасибо за помошь в реализации данного аспекта
UPD. Теперь слайдшоу пропало и остальные компоненты после реализации установки Dokan таким способом одно вылечили другое искалечили
Автор: Gnom3
Дата сообщения: 06.08.2013 14:16

Цитата:
после реализации установки Dokan

не. никак не может влиять оно на компоненты и слайдшоу.
MainPanel.Height := Height - 1; - делает MainPanel шириной во весь инсталл и соответственно закрывает его весь.


Добавлено:
trolltmn слегка причесал. со слайдшоу без костылей никак, но и длл-ка, которую ты используешь писалась года 4-5 назад и с современными версиями инно косовато работает.
Ссылка
Автор: sjwrec
Дата сообщения: 06.08.2013 14:33
Gnom3


Цитата:
пытался я тебе объяснить, что неверным путем ты идешь


А потому что правильным путём вы сказали около киллометра кода импорта... DX.
Пришлось искать путь в обход "горы". Кстати когда здесь был выложен Тест DX,
никто не жаловался что не работает, просто тупо вылазил логотип, а дальше всё ОК.
Автор: trolltmn
Дата сообщения: 06.08.2013 14:35

Цитата:
не. никак не может влиять оно на компоненты и слайдшоу.


разобрался дело было не в бабине....

Упустил
WindowVisible=yes
WindowResizable=no
WindowShowCaption=no


Цитата:
trolltmn слегка причесал. со слайдшоу без костылей никак, но и длл-ка, которую ты используешь писалась года 4-5 назад и с современными версиями инно косовато работает.


Спасибо огромное, пойду проверять.
Автор: sjwrec
Дата сообщения: 06.08.2013 15:09
Gnom3

Цитата:
Библиотека для определения версии directX

Скомпилил на своём: Inno Setup Compiler 5.5.1.ee1. (a) (build 121216)

Проверил:
на XP SP2 x32: Показывает DirectX 9.0c - дальше ненужный мне хвост (полная версия).
на 7 x32: Показывает DirectX 11 - без лишних хвостов, чему я очень рад.

А вот DX видекарты она не показывает.
Автор: Kapranov98
Дата сообщения: 06.08.2013 15:42
Помогите реализовать подхват файлов, которые нужно установить, из папки, лежащей рядом с инсталлером.
Автор: Gnom3
Дата сообщения: 06.08.2013 16:02

Цитата:
А вот DX видекарты она не показывает.

показывает версию, которая будет работать в конкретно взятой системе. ибо даже если у тебя видеокарта у тебя ДХ11, то в ХР она все равно будет работать на 9-м. посему большого смысля ловить дальше не вижу.
Цитата:
Пришлось искать путь в обход "горы".

Ага. Только получается в твоем случае гора куда боольшая. Ибо ты запускаешь целое приложение, которое делает кучу дел, выполняет целые километры кода раде заветной циферки, плюс его выполнение носит все следы вирусной активности и поэтому нормальный антивирус просто обязан его блокировать. Поэтому этот путь неверный.

Цитата:
А потому что правильным путём вы сказали около киллометра кода импорта... DX

портирование его в инно - горазда больше, если называть километром каждую тысячу строк. плюс скорость работы - ожидание до нескольких минут, пока интерпретатор инно разродит весь этот импорт ради опять-же одной не сильно нужной циферки - это вообще неправильно. Но скомпилировать этот код в длл-ку и импортировать одну единственную функцию - никто-же не запрещает?

Добавлено:

Цитата:
Помогите реализовать подхват файлов, которые нужно установить, из папки, лежащей рядом с инсталлером.

справка, секция [Files], флаги, флаг external
Автор: Kapranov98
Дата сообщения: 06.08.2013 16:22

Цитата:
справка, секция [Files], флаги, флаг external

Может не до понял или ещё что-то, объясню по другому. Мне нужно, чтобы готовый setup.exe весил мало и подхватывал файлы из папки core, лежащей рядом с ним при установке. Всё это будет запаковано в 7-Zip и сделано SFX архивом, чтобы при запуске выполнялся setup.exe и подхватывал из распакованных файлов из папки core файлы для установки и ставил их.

Если правильно понял, то можно Source: C:\Program Files\Nightly\*; поменять, но тогда вопрос, как прописать путь до папки, которая будет лежать рядом с установщиком. Полный пусть не подходит, у всех разный может быть
Автор: Gnom3
Дата сообщения: 06.08.2013 16:48

Цитата:
как прописать путь до папки, которая будет лежать рядом с установщиком.

Опять-же. Справка. да-да - Ф1 - сила (я не о гранате )
константы - {src}. с предидущей подсказкой, получаем такое:

Код: [Files]
Source: "{src}\Files\*"; DestDir: "{app}"; Flags: external createallsubdirs recursesubdirs;
Автор: Kapranov98
Дата сообщения: 06.08.2013 17:09

Цитата:
Цитата:
как прописать путь до папки, которая будет лежать рядом с установщиком.

Опять-же. Справка. да-да - Ф1 - сила (я не о гранате )
константы - {src}. с предидущей подсказкой, получаем такое:

Код:
[Files]
Source: "{src}\Files\*"; DestDir: "{app}"; Flags: external createallsubdirs recursesubdirs;

папку Files с нужными файлами кладем рядом с инсталлом (если посмотреть в справку, то станет понятно, почему)
createallsubdirs - создаст по пути указанному в DestDir полное дерево каталогов из папки Files с корневой папкой указанной в DestDir.
recursesubdirs - скопирует все файлы из всех подпапок начиная от корня Source (в нашем случае это папка Files рядом с инсталлом), в папку указанную в DestDir с сохранением всех подпапок.
то-есть, все, что в папке Files рядом с инсталлом, окажется в папке {app} без самой папки Files

Оу, огромное спасибо. Кажется получилось!
Автор: 999Kay666
Дата сообщения: 06.08.2013 17:45
nik1967

Цитата:
зачем огород городить

что сказать: вы гений. долой садоводство и спасибо
Автор: sjwrec
Дата сообщения: 06.08.2013 18:30
Gnom3

Цитата:
Но скомпилировать этот код в длл-ку и импортировать одну единственную функцию -  никто-же не запрещает?


Я скрипты Inno Setup -то с трудом понимаю, а Вы предлагаете мне сварганить библиотеку на профессиональных языках (Delphi, C++) ?

Да я там полный 0 . И учить их нет никакого желания.


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


В самой проге я вируса не наблюдал. Да на API функиции в скрипте Inno антивирусник не ругался. Что там за вирус?


Цитата:
в ХР она все равно будет работать на 9-м. посему большого смысля ловить дальше не вижу.


А кто говорит про XP. Дело в том что это нужно чтобы не дать инсталлу возможности установить игру в систему, в которой видеокарта не поддерживает DX11. И только не надо говорить что у всех уже DX11 видеокарты. Я себе не раньше чем через год только куплю.

Пожалуйста сделайте библиотеку проверки DX видеокарты.
Автор: Dark_Delphin
Дата сообщения: 06.08.2013 20:01
Всем привет.

Подскажите, пожалуйста, почему инсталлятор не прозрачный?
Библиотеку прописал.
http://rghost.ru/47938429

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

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


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