Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
Николай_Николаич@vk
24-05-2015, 21:48
В ISDone 06final есть пример SecondProgressBar »
Он без Isdone работает?
OldGamer
25-05-2015, 18:47
Всем привет!
Подскажите, пожалуйста, как изменить стандартное окно выбора языков установки?
Нужно точно так, как на скриншоте (http://i70.fastpic.ru/big/2015/0525/a4/03f54d4313ad080592cfc2a4f921eea4.png)
1. В шапке - название программы;
2. "Выберите язык установщика" по-английски и по-русски в 2 строки;
3. Названия языков чтоб отображались через "/".
OldGamer, вот пример автор sergey3695 я его не много подправил под твой скрин http://rghost.ru/8tQSLWRVD
вот мой скрин
http://i71.fastpic.ru/big/2015/0526/6d/68cf4139b57b6683d0edbdb049ac8e6d.png (http://fastpic.ru/)
sergey3695
26-05-2015, 19:22
vint56, (Unicode)
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[LangOptions]
english.LanguageName=English / Английский
russian.LanguageName=Russian / Русский
Dodakaedr
26-05-2015, 23:15
OldGamer, Еще один вариант, чисто средствами inno[Setup]
AppName=app
AppVersion=1.5
DefaultDirName={sd}\app
[Files]
Source: compiler:WizModernSmallImage-IS.bmp; DestName: "1.bmp"; Flags: dontcopy
[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[LangOptions]
english.LanguageName=English / Английский
russian.LanguageName=Russian / Русский
[Messages]
SelectLanguageLabel=Please select a language.%nВыберите язык установщика.
SelectLanguageTitle=Ashampoo® Burning Studio 15
[Code]
function InitializeLanguageDialog(): Boolean;
begin
with SelectLanguageForm do
begin
ExtractTemporaryFile('1.bmp');
IconBitmapImage.SetBounds(ScaleX(IconBitmapImage.Left), ScaleY(IconBitmapImage.Top), ScaleX(55), ScaleY(55));
IconBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
SelectLabel.Left := ScaleX(SelectLanguageForm.SelectLabel.Left + 25);
LangCombo.SetBounds(ScaleX(LangCombo.Left + 25), ScaleY(LangCombo.Top), ScaleX(LangCombo.Width - 60), ScaleY(LangCombo.Height));
end;
result := true;
end;
OldGamer
27-05-2015, 00:58
Всем большое спасибо за примеры выше - всё работает :up
habib2302
27-05-2015, 13:53
как изменить стандартное окно выбора языков установки? »
А как просто заменить bmp на png?
Dodakaedr
27-05-2015, 14:27
А как просто заменить bmp на png? »
Через ботву.
habib2302
27-05-2015, 14:28
Dodakaedr, ну понятно, что через ботву. я что-то сделал, но не работает
#include "botva2.iss"
[Setup]
AppName=DrawImageExample by South.Tver
AppVerName=DrawImageExample by South.Tver
DefaultDirName={pf}\ImageExample
OutputBaseFilename=setup
RawDataResource=Botva:botva2.dll|Lang.png
[Code]
function GetFromRes(const ResName, SaveFileName: String): Boolean;
var
lResStream: TResourceStream;
begin
lResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
lResStream.SaveToFile(ExpandConstant('{tmp}\') + SaveFileName);
finally
lResStream.Free;
Result := FileExists(ExpandConstant('{tmp}\') + SaveFileName);
end;
end;
procedure InitializeWizard;
var
IPLang: THandle;
begin
with WizardForm do
begin
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_LANG', 'Lang.png') then
begin
IPLang := ImgLoad(SelectLanguageForm.Handle, ExpandConstant('{tmp}\Lang.png'), 5, 5, 40, 40, True, True);
ImgSetVisibility(IPLang, True);
ImgApplyChanges(SelectLanguageForm.Handle);
end;
end;
end;
procedure DeinitializeSetup();
begin
if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown();
end;
/////////////////////////////////////////////////////////////////////
Dodakaedr
27-05-2015, 14:43
habib2302, здесь реализовано http://forum.oszone.net/post-2511590-643.html
habib2302
27-05-2015, 15:08
Dodakaedr, там много лишнего
вот скомпилировал скрипт и вот что получилось
http://s017.radikal.ru/i405/1505/65/e5cc61269f84.png (http://s017.radikal.ru/i441/1505/57/562b4f32fa2a.jpg) http://s020.radikal.ru/i700/1505/21/87173f974426.png (http://s50.radikal.ru/i130/1505/05/153d712d4ff5.jpg)
Т.е. изображение выделенное красным должно быть совершенно в другом месте (в SelectLanguageForm)
Dodakaedr
27-05-2015, 15:46
Т.е. изображение выделенное красным должно быть совершенно в другом месте (в SelectLanguageForm) »
Ну так поместите его туда.
habib2302, там много лишнего
#define MyAppName "Ashampoo® Burning Studio 15"
#define MyAppVersion "15.0.4.4"
#define InstallFiles "InstallFiles"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
RawDataResource=Botva:{#InstallFiles}\botva2.dll|b2p:{#InstallFiles}\b2p.dll|Icon:{#InstallFiles}\Ic on.png
[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[LangOptions]
english.LanguageName=English / Английский
russian.LanguageName=Russian / Русский
[Files]
Source: "InstallFiles\*"; Flags: dontcopy;
[code]
const
RT_RCDATA = 10;
type
#ifdef UNICODE
PChar = PAnsiChar;
#endif
var
IconPanel : TPanel;
function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean):Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';
procedure ImgSetVisibility(img :Longint; Visible :boolean); external 'ImgSetVisibility@{tmp}\b2p.dll stdcall delayload';
procedure ImgApplyChanges(h: HWND); external'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
procedure gdipShutdown; external'gdipShutdown@{tmp}\botva2.dll stdcall delayload';
function ExtractResource(var ResourceList: TStringList): Boolean;
var
ResStreams: array of TResourceStream;
ResName, ResFile: String;
i: Integer;
begin
if ResourceList = nil then Exit;
Result := ResourceList.Count > 0;
SetArrayLength(ResStreams, ResourceList.Count);
try
for i := 0 to ResourceList.Count-1 do
try
ResName := Trim( Copy(ResourceList.Strings[i], 1, Pos(',', ResourceList.Strings[i])-1) );
ResFile := Trim( Copy(ResourceList.Strings[i], Pos(',', ResourceList.Strings[i])+1, Length(ResourceList.Strings[i])-Pos(',', ResourceList.Strings[i])) );
ResStreams[i] := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
ResStreams[i].SaveToFile(ExpandConstant('{tmp}\') + ResFile);
Result := Result and FileExists(ExpandConstant('{tmp}\') + ResFile);
finally
ResStreams[i].Free;
end;
finally
ResourceList.Free;
end;
end;
function InitializeLanguageDialog(): Boolean;
var
IconHandle: THandle;
ResList: TStringList;
begin
ResList := TStringList.Create;
ResList.Add('_IS_b2p, b2p.dll');
ResList.Add('_IS_BOTVA, botva2.dll');
ResList.Add('_IS_Icon, Icon.png');
IconPanel := TPanel.Create(SelectLanguageForm);
with IconPanel do
begin
Parent := SelectLanguageForm;
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(100);
Height := ScaleY(100);
BevelOuter := bvNone;
end;
with SelectLanguageForm do
begin
if ExtractResource(ResList) then
begin
Width := ScaleX(315);
Height := ScaleY(155);
IconHandle := ImgLoad(IconPanel.Handle, ExpandConstant('{tmp}\Icon.png'), 0, 0, 100,100, True, True);
IconBitmapImage.Hide;
ImgApplyChanges(IconPanel.Handle);
SelectLabel.Left := ScaleX(SelectLanguageForm.SelectLabel.Left + 65);
LangCombo.SetBounds(ScaleX(LangCombo.Left + 65), ScaleY(LangCombo.Top), ScaleX(LangCombo.Width - 60), ScaleY(LangCombo.Height));
SelectLabel.Caption:='Please select a language.'#13'Выберите язык установщика.';
end;
result := true;
end;
end;
procedure DeinitializeSetup;
begin
if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown;
end;
habib2302
27-05-2015, 18:52
Не получается
https://yadi.sk/d/6zebFSKAguVwA
и как убрать это
http://s017.radikal.ru/i424/1505/54/7edc090ba6e9.png (http://s019.radikal.ru/i620/1505/c3/f8990928dded.jpg)
и как убрать это »
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
end;
habib2302, http://rghost.ru/7s2pJXVgj
habib2302
28-05-2015, 21:40
не отображается
http://s017.radikal.ru/i431/1505/35/693146165f7e.png (http://s017.radikal.ru/i418/1505/ae/f5012c3f16e7.jpg)
habib2302, uinocode
http://i70.fastpic.ru/big/2015/0528/3f/9ab7075e2bd8264cf000f6566029443f.png (http://fastpic.ru/)
TrueMage
30-05-2015, 11:56
Господа, пожалуйста, помогите или хотя бы сориентируйте куда копать. :)
Задача следующая: нужно установить мод в определенную папку на жестком диске, исходя из следующих условий, размещенных в порядке важности
Вариант 1 (чистая установка)
а) Если есть ключ реестра "reg:HKCU\SOFTWARE\Blizzard Entertainment\Diablo II", то оттуда как "InstallPath\BFE",
б) Если на жестких дисках есть файл, скажем, patch_d2.mpq, то в каталог, который содержит этот файл плюс, опять же, "\BFE"
в) если нет ни того ни того, то в {pf}\BFE.
Вариант 2 (установка обновления)
а) просто в папку, куда была установлена предыдущая версия.
Возможно ли это вообще? Заранее очень благодарен.
kotyarko@fb
30-05-2015, 12:55
TrueMage, в принципе, ничего особенного. Но в этом варианте:
б) Если на жестких дисках есть файл, скажем, patch_d2.mpq, то в каталог, который содержит этот файл плюс, опять же, "\BFE" »
поиск будет не самый быстрый. Будет напрямую зависеть от забитости хардов.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.