PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [39] 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Shkutu
23-05-2014, 16:24
saurn, была у меня такая мысль. Хотя с fpc приложением библиотека работает, это я проверяла. Ладно, буду разбираться

Антон_Мураткин@vk
23-05-2014, 16:48
Ребят подскажите пожалуйста!
Вот в эту панель можно добавить прозрачность?

Panel1 := TPanel.Create(WizardForm);
with Panel1 do begin
Parent := WizardForm;
SetBounds(ScaleX(0),ScaleY(-195),ScaleX(650),ScaleY(195));
Color := clblack;
ParentBackground := False;
end;
Заранее благодарю.

Alloc
23-05-2014, 16:49
Shkutu, спасибо большое, это именно то, что надо. Есть еще вопросик.. не могли бы Вы мне помочь?

помогите грамотно (логично) переделать мою писанину:


[Languages]
#ifdef InfoBefore
Name: rus; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: "InfoB_R.rtf";
Name: eng; MessagesFile: compiler:Languages\English.isl; InfoBeforeFile: "InfoB_E.rtf";
#endif
#ifdef InfoAfter
Name: rus; MessagesFile: compiler:Languages\Russian.isl; InfoAfterFile: "InfoB_R.rtf"; InfoAfterFile: "InfoA_R.rtf";
Name: eng; MessagesFile: compiler:Languages\English.isl; InfoAfterFile: "InfoB_E.rtf"; InfoAfterFile: "InfoA_E.rtf";
#endif

#ifndef InfoBefore and InfoAfter (если не то и не другое то загрузить:
Name: rus; MessagesFile: compiler:Languages\Russian.isl;
Name: eng; MessagesFile: compiler:Languages\English.isl;
#endif


вообщем у меня есть две константы : InfoBefore, InfoAfter;
при раскомментирование должен грузится соответствующий файл : InfoBeforeFile: InfoB_* / InfoAfterFile: InfoA_*, при этом необходимо как то сообщить инсталлятору какой язык был выбран, и исходя из этого выбора грузить русскую версию или английскую "InfoBeforeFile/InfoAfterFile"... никак не могу реализовать....

Shkutu
23-05-2014, 17:06
El Sanchez, спасибо, буду смотреть
Alloc, для "спасибо" есть "полезные сообщения":))
А вообще я не совсем поняла, что вам нужно. Если просто выводить различные файлы в зависимости от языка, то для InfoAfterFile это аналогично InfoBeforeFile. Т е в результате будет
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: "InfoB_R.rtf"; InfoAfterFile: "InfoA_R.rtf";
Name: eng; MessagesFile: compiler:Languages\English.isl; InfoBeforeFile: "InfoB_E.rtf"; InfoAfterFile: "InfoA_E.rtf";
А вот если вам надо выводить или не выводить страницу в зависимости от значений констант, то это или так как у вас через ифдефы, или можно скипить страницы в коде

const/var InfoBefore, InfoAfter...; //задаете ваши константы или делаете глобальными переменными, если они от чего-то зависят
function ShouldSkipPage(PageID:integer):boolean;
begin
case PageID of
wpInfoBefore: result:=InfoBefore=<значение_при_котором_страница_пробрасывается>;
wpInfoAfter result:=InfoAfter=<значение_при_котором_страница_пробрасывается>;
end;

Shift85
23-05-2014, 17:23
Вот в эту панель можно добавить прозрачность? »
Антон_Мураткин@vk, Тут ведь все подробно расписано.

procedure InitializeWizard();
begin
// Необходимо добавлять каждую кнопку расположенную на стекле
// до инициализации стекла для того что бы не было дыр ))
iswin7_add_button(WizardForm.BackButton.Handle);
iswin7_add_button(WizardForm.NextButton.Handle);
iswin7_add_button(WizardForm.CancelButton.Handle);
// Параметр True не трогать он для htuos ))
iswin7_add_glass(WizardForm.Handle, 0, 0, 0, 47, True);
end;

Антон_Мураткин@vk
23-05-2014, 17:31
Shift85, Что то так и не понял как это применить в текст который выше

Dodakaedr
23-05-2014, 18:00
Антон_Мураткин@vk, Попробуйте так Panel1 := TPanel.Create(WizardForm);
with Panel1 do begin
Parent := WizardForm;
SetBounds(ScaleX(0),ScaleY(-195),ScaleX(650),ScaleY(195));
ParentBackground := True;
end;

Irenis
23-05-2014, 18:17
Есть несколько вопросов :)

1.Подскажите, как в скрипте прописать, если нужно, чтобы установщик распаковал два arc архива. Вот если нужно распаковать один архив, в скрипте идет такая строчка:

if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\Reborn.arc'), ExpandConstant('{app}\'),

А чтобы распаковать два архива, просто добавить такую же строчку, только с названием второго архива? Или как?

2. Вот пример скрипта. Скрипт (http://files.mail.ru/B294D4E0041A43AD8C24CE00DD3FB26F). При установке игры внизу надпись "требуется как минимум 5.1 Мб свободного дискового пространства". Где в скрипте прописать, сколько места требуется на самом деле, например 5.4 Гб?

3. Уже задавала вопрос по поводу создания установщиков, которые состоят из веб-загрузчика и самой игры. Как совместить? Мне уже писали, что нужно найти записи из реестра. А что делать с этим реестром? Как правильно вставить в скрипт? И достаточно ли будит этого, чтоб игра и загрузчик видели друг друга?

Буду рада любым советам :yes:

saurn
23-05-2014, 18:25
А чтобы распаковать два архива, просто добавить такую же строчку, только с названием второго архива? Или как? »
Именно так.
При установке игры внизу надпись "требуется как минимум 5.1 Мб свободного дискового пространства". Где в скрипте прописать, сколько места требуется на самом деле, например 5.4 Гб? »
[Setup]
ExtraDiskSpaceRequired=5700000000 {Значение указывается в байтах}

Антон_Мураткин@vk
23-05-2014, 19:19
Dodakaedr, нет не работает.

З.Ы. Или хотя бы полу прозрачность в(%) как нибудь добавить в этот текст? Очень надо, а у самого что то не получается

З.Ы.Ы. И ещё вопросик. Установил музыку в скрипт она работает всё нормально но картинки нет чтобы вкл выкл песню (звук). Точней картинка есть но она под другой. Как мне картинку с вкл выкл музыки на передний план сделать?

Заранее благодарю!!!

saneksanek
23-05-2014, 19:51
Dodakaedr,
Мой косяк,извиняюсь.http://yadi.sk/d/_H8RyqgdR7VUj

Dodakaedr
23-05-2014, 20:03
saneksanek, Вы этот пост (http://forum.oszone.net/post-2354696-751.html) смотрели? Оно или нет?

saneksanek
23-05-2014, 20:24
Dodakaedr,
С вашим предоставленным кодам выдает ошибку "Could not call proc." в чем может быть проблема?

Dodakaedr
23-05-2014, 20:28
saneksanek, а файлы скачали которые прилагаются в посте?
#include "botva2.iss"
#include "BASS_Module.iss"

[Setup]
AppName=BassExample
AppVerName=BassExample
DefaultDirName={pf}\BassExample

[Files]
Source: BASS.dll; Flags: dontcopy
Source: CallbackCtrl.dll; Flags: dontcopy
Source: botva2.dll; Flags: dontcopy
Source: BASS_Files\*; Flags: dontcopy
//Source: music.mp3; DestDir: {tmp}; Flags: dontcopy

[ code]
procedure InitializeWizard();
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('CallbackCtrl.dll');
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('volmax.png');
ExtractTemporaryFile('volmin.png');
ExtractTemporaryFile('volpb.png');
ExtractTemporaryFile('voldote.png');
//ExtractTemporaryFile('Music.mp3');

//BASS_Init('{tmp}\Music.mp3') //Запускаем музыку
//Можно добавить в инсталл несколько песен
//BASS_Init(ExpandConstant('{tmp}\*')) //Поиск по маске

//Создаем регулятор громкости
BASS_CreateMediaPlayer(WizardForm, '{tmp}\volmax.png', '{tmp}\volmin.png', '{tmp}\volpb.png', '{tmp}\voldote.png', 20, 325)
end;

procedure DeinitializeSetup();
begin
//BASS_DeInit; //Освобождаем процесс
gdipShutdown
end;

saneksanek
23-05-2014, 20:49
Dodakaedr,
Нет,проглядел.Добавил ваши модули все заработало спс

Kashtan007
23-05-2014, 21:18
Dodakaedr, все отлично работает, но есть небольшой баг.
При открытии установщика проскакивает синий фон с названием установщика. С чем это может быть связано?
Вот видео, на нем все видно http://youtu.be/iRQXMh1y7g0

Dodakaedr
23-05-2014, 21:51
С чем это может быть связано? »
Не знаю, наверное это баг самой dll-ки...
Попробуйте вот это

saneksanek
23-05-2014, 22:30
Теперь выходит проблема такая.
При запуске exe выходит так http://s019.radikal.ru/i612/1405/8a/ab1d1ce8ec87t.jpg (http://radikal.ru/fp/7b0af08b220d4a30a3068d5db5fc100a)
Но если нажать далее а потом назад то все нормально будет http://s005.radikal.ru/i210/1405/45/c2efc8796e45t.jpg (http://radikal.ru/fp/b6f93794f9634454b1bdb74987886b7a)
Можно-ли как-то исправить.
Конфликт я думаю идет с этим кодом.var MainImage : TBitmapImage;
FinishedImage: TBitmapImage;
WelcomeLabel1, WelcomeLabel2,StartMenuLbl,FinishedLabel,Welcome1,Welcome2,NeedSpaceLabel,SelectTasksLabel, FreeSpaceLabel, FinishedHeadingLabel: TLabel;

procedure InitializeWizard3();
begin
ExtractTemporaryFile('1.bmp');
MainImage := TBitmapImage.Create(WizardForm);
with MainImage do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 500;
Height := 313;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
end;

ExtractTemporaryFile('5.bmp');
FinishedImage := TBitmapImage.Create(WizardForm);
with FinishedImage do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 500;
Height := 313;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\5.bmp'));
end;

Welcome1:= TLabel.Create(WizardForm);
with Welcome1 do
begin
Left:= ScaleX(150);
Top:= ScaleY(26);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Size:= 12;
Font.Color:=clBlack
Font.Style := [fsBold]
Parent:= WizardForm;
Font.Name:= 'Georgia'
Caption:= ExpandConstant('{cm:Welcome1}')
end;

Welcome2:=TLabel.Create(WizardForm);
with Welcome2 do
begin
Left:= ScaleX(150);
Top:= ScaleY(66);
Width:= ScaleX(345);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=clBlack
Font.Name:= 'Georgia'
Font.Size:= 10;
Transparent:= true;
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:Welcome2}')
end;

FinishedHeadingLabel:=TLabel.Create(WizardForm);
with FinishedHeadingLabel do
begin
Left:= ScaleX(170);
Top:= ScaleY(26);
Width:= ScaleX(300);
Height:= ScaleY(150);
AutoSize:= false;
WordWrap:= true;
Font.Size:= 12;
Font.Color:=clBlack
Font.Name:= 'Georgia'
Font.Style := [fsBold]
Transparent:= true;
Parent:= WizardForm;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
end;

FinishedLabel:= TLabel.Create(WizardForm);
with FinishedLabel do
begin
Left:= ScaleX(170);
Top:= ScaleY(66);
Width:= ScaleX(325);
Height:= ScaleY(150);
AutoSize:= false;
WordWrap:= true;
Transparent:= true;
Font.Color:=clBlack
Font.Size:= 10;
Font.Name:= 'Georgia'
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:Finished1}') + #10#13#10 + ExpandConstant('{cm:Finished2}')
end;
end;

procedure HideComponents;
begin
Welcome1.Hide;
Welcome2.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

end;

procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
Welcome1.Show;
Welcome2.Show;
end;
wpFinished:
begin
FinishedHeadingLabel.Show;
FinishedLabel.Show;
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
ShowComponents(CurPageID);
if CurPageID = wpWelcome then
begin
WizardForm.OuterNotebook.Hide;
FinishedImage.Hide;

end
else if CurPageID = wpFinished then
begin
WizardForm.OuterNotebook.Hide;
MainImage.Hide;
FinishedImage.Show;
end
else WizardForm.OuterNotebook.Show;
end;

Dodakaedr
24-05-2014, 18:52
Подскажите как освобождать процесс программы из системы перед удалением?

saneksanek
24-05-2014, 21:24
Dodakaedr,
Если правильно понял вас,[Files]
Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion
[ Code]
//**На этапе деинсталляции убивает процесс
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
if RunTask('file.exe', False) then
begin
// прячем форму
UninstallProgressForm.Visible:= False;
if MsgBox('Программа file.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
begin
KillTask('file.exe');
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
// показываем форму
UninstallProgressForm.Visible:= True;
end
else
begin
MsgBox('Завершите работу file.exe, затем снова запустите программу удаления.', mbInformation, MB_OK);
UnloadDll(ExpandConstant('{app}\ISTask.dll'));
Abort;
end;
end;
end




© OSzone.net 2001-2012