Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
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;
Заранее благодарю.
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"... никак не могу реализовать....
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;
Вот в эту панель можно добавить прозрачность? »
Антон_Мураткин@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;
Есть несколько вопросов :)
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:
А чтобы распаковать два архива, просто добавить такую же строчку, только с названием второго архива? Или как? »
Именно так.
При установке игры внизу надпись "требуется как минимум 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC