Войти

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


Страниц : 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 126 127 128 129 130 131 132 133

Serega
03-11-2009, 21:49
хочу сделать что-бы был шрифт(вернуть его на ВСЕ страницы) и возможность его менять »
Ну так просто не используйте данный код и всё будет по умолчанию, а поменять шрифт можно так:

WizardForm.Font.Name:= 'имя шрифта';

kampaster
04-11-2009, 04:50
Доброе утро.... вот зарегистрировался на этом замечательном сайте, делаю репаки - довольно не плохо, вот подумал перекодировать музыку с помощью oggdec.exe..... я знаю как конвертировать музыку из ogg в wav и знаю что писать в батнике и в Inno Setup чтоб это красиво во время установки конвертировалось ну вобщем работало.... но проблема в том что я немогу понять как мне конвертнуть из wav в ogg....
Калбасился калбасился в батнике.... Помогите пожалуйста добрые люди=)
Вот консольный oggdec.exe (команды)
http://pics.kz/s4/01/b2/9e/bf/01b29ebf3922ebc2e15e327444365ffd.jpg

BlackSelf
04-11-2009, 07:45
kampaster, к inno это вообще не относится. А oggdec, к твоему сведению, кодирует только ogg в wav.

kampaster
04-11-2009, 09:04
BlackSelf спасибо за ответ....
А oggdec, к твоему сведению, кодирует только ogg в wav.
Жалко, а я так надеялся....
kampaster, к inno это вообще не относится.
Вобщето относится..... Яже с inno работаю.. поэтому мне это нужно.... Но всёравно спсибо!=)

Tukash
04-11-2009, 10:17
Serega
да не))) я хочу и скрипт и шрифт!

Serega
04-11-2009, 15:44
я хочу и скрипт и шрифт! »
Извините я не телепат и не могу прочитать ваши мысли, что всё таки вы хотите сделать...
К сведению, у каждого TLabel есть Font.Name, т.е. - TLabel.Font.Name:= 'имя'

A1EXXX
04-11-2009, 18:27
Inno Setup Compiler [03.11.09] (English) (http://restools.hanzify.org/inno/InnoCompiler091103_English(7zip).zip) - новая версия компилятора от ResTools (http://restools.hanzify.org/)

МИШАНЧИК
05-11-2009, 13:50
Подскажите пожалуйста!
Есть папка Gamedate и нужно сделать чтоб она находилась в дистрибутиве, но копировалась в {app} только когда включен чекбокс на дополнительных задачах.
Как правильно это оформить?

A1EXXX
05-11-2009, 14:18
МИШАНЧИК,
[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "gamedata"; Description: "{cm:xxx}";

[CustomMessages]
Russian.xxx=Установить Gamedata?

[Files]
Source: D:\Gamedata\*; DestDir: "{app}"; Tasks: gamedata; Flags: ignoreversion recursesubdirs createallsubdirs

МИШАНЧИК
05-11-2009, 15:42
A1EXXX, большое спасибо!
А ещё вопрос, можно ли как-то сделать чтоб при наведении курсора на этот чекбокс появлялась всплывающая надпись с описанием?

A1EXXX
05-11-2009, 17:06
МИШАНЧИК, можно! Немного повозился и вот, что получилось :)
; Первоисточник - скрипт ComponentsDescriptions by Victor Dobrov
; изменён и переделан под TaskPage by A1EXXX

[Setup]
AppName=Tasks Descriptions
AppVerName=Tasks Descriptions 1.0
DefaultDirName=Tasks Descriptions
OutputDir=.

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

[Files]
; скачать библиотеку descctrl.dll (6 кб) можно здесь: http://victor-dobrov.narod.ru/inno_descctrl.7z
Source: descctrl.dll; Flags: dontcopy;
Source: D:\Gamedata\*; DestDir: "{app}"; Tasks: gamedata; Flags: ignoreversion recursesubdirs createallsubdirs

[CustomMessages]
Russian.xxx=Установка компонента Gamedata

[Tasks]
Name: "gamedata"; Description: "{cm:xxx}";

[Code]
var Point: TPoint; CompDesc: TEdit; MessageForm: TForm; MessagePanel: TPanel; MessageLabel: TLabel; n, frame: integer;

function EnableDesc(TasksListHandle, DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
procedure GetCursorPos(var Point: TPoint); external 'GetCursorPos@user32 stdcall delayload';
function SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, wFlags: Longint):Boolean; external 'SetWindowPos@user32.dll stdcall';

Procedure DrawIcon(Form: TWinControl; File: String; nIcon, Left, Top, Size, BColor: Integer); var Panel: TPanel; Rect: TRect; Begin
Panel:= TPanel.Create(Form); Panel.SetBounds(Left, Top, Size, Size); Panel.Parent:= Form
with TBitmapImage.Create(Panel) do begin Parent:= Panel; with Bitmap do begin
Width:= Size; Height:= Size; Rect.Right:= Size; Rect.Bottom:= Size; Canvas.Brush.Color:= BColor; Canvas.FillRect(Rect); end; end;
End;

Procedure ResizeLabel(Obj: TLabel; Text: String; MaxWidth: Integer); var k, w, h: integer; Begin {размер формы подгоняется под текст}
Obj.AutoSize:= true; Obj.WordWrap:= false; Obj.Caption:= Text; {авторазмер}
w:= Obj.Width; h:= Obj.Height; n:= (w + frame*2)/MaxWidth + 1
Repeat
Obj.Width:= w/n + frame*2*n + k
Obj.Height:= h * n
Obj.WordWrap:= true; k:= k + 4
Until Obj.Height/h = n
End;

Procedure ShowHint(String: string; AIndex: Integer; Center: Bool); Begin {размер формы подгоняется под текст, если AIndex = 0, значок не рисуется}
frame:= 10; if AIndex <> 0 then String:= ' '+ String;
GetCursorPos(Point); MessageLabel.Left:= frame; MessageLabel.Top:= frame
ResizeLabel(MessageLabel, String, WizardForm.ClientWidth)
if Center then n:= WizardForm.Left + WizardForm.Width/2 - (MessageLabel.Width + frame*2 -2)/2 else n:= Point.X + 12
MessageForm.SetBounds(n, Point.Y + 12, MessageLabel.Width + frame*2 -2, MessageLabel.Height + frame*2 -2)
MessageForm.Show; SetWindowPos(MessageForm.Handle, -1, 0, 0, 0, 0, 3);
End;

Procedure DeinitializeSetup();
Begin
disabledesc();
End;

Procedure CurStepChanged(CurStep: TSetupStep);
Begin
if CurStep = ssInstall then disabledesc();
End;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID = wpSelectTasks then enableDesc(WizardForm.TasksList.Handle,CompDesc.Handle,
'Демонстрационный режим (описание компонента)'); // текст описания
End;

Procedure ObjectOnClick(Sender: TObject);
Begin
Case TObject(Sender) of {событие объекта}
CompDesc:
if CompDesc.Text > '' then ShowHint(CompDesc.Text, 0, true) else MessageForm.Hide;
MessageForm:
WizardForm.BringToFront;
end;
End;

Procedure InitializeWizard;
Begin
CompDesc:= TEdit.Create(WizardForm)
CompDesc.Parent:= WizardForm
CompDesc.Visible:= false
CompDesc.OnChange:= @ObjectOnClick
MessageForm:= CreateCustomForm;
MessageForm.BorderStyle:= bsNone
MessageForm.OnActivate:= @ObjectOnClick
MessagePanel:= TPanel.Create(MessageForm)
MessagePanel.BevelInner:= bvLowered;
MessagePanel.Align:= alClient;
MessagePanel.Color:= $E1FFFF; // цвет панели
MessagePanel.Parent:= MessageForm
MessageLabel:= TLabel.Create(MessagePanel)
MessageLabel.Transparent:= true
MessageLabel.Font.Name:= 'Tahoma' // шрифт описания
MessageLabel.Font.Size:= WizardForm.Font.Size
MessageLabel.Parent:= MessagePanel
End;

МИШАНЧИК
06-11-2009, 07:35
A1EXXX, большое Вам спасибо! Буду пробовать.

A1EXXX
06-11-2009, 15:07
Подобный вопрос звучал уже неоднократно, но ответа на него так и не увидел... В общем, можно ли прикрутить запрос 2-го диска к скрипту Булата FreeArc_Example? Запаковка arc'ов в инсталл не подходит. Или может можно записать в [Files] архив, который будет находиться на другом носителе (хотя бы для SFX, но чтобы по окончании распаковки основных, выводился запрос для следующего архива....)
А ещё лучше бы сделать так (если возможно): допустим, на 1-ом диске находится 4 архива. Распаковавшись, инсталлятор делает паузу и выводит сообщение (окошко) - мол, хотите продолжить, вставьте диск 2, и по нажатии "Да" инсталл не замечая подвоха распаковывает ещё один архив (вот только как сообщить ему заранее, что архивов 5, чтобы прогресс-бар не заполнился до конца :(), а если "Нет" - завершение установки... А может есть решение куда проще? Жду ваших предложений :)

Serega
06-11-2009, 21:16
В общем, можно ли прикрутить запрос 2-го диска к скрипту Булата FreeArc_Example? »
Можно, но об этом спросите автора...
P.S.
Обычно я игнорирую вопросы на данную тему... извините, но просто уже устал разбираться в чужих дебрях...

S.E.K.T.O.R.
06-11-2009, 22:19
Уже задавал этот вопрос но ответа не увидел. Мож кто-нибудь догадался как изменить сообщение "Недостаточно места на диске" или вовсе отключить его, а вместо него заставить инсалл выдавать другое

S.E.K.T.O.R.
06-11-2009, 23:15
1) Как сделать, чтобы когда игру уже установлена, при запуске инсталла выскакивало такое вот окошко? »

По-моему никто не ответил, а делается это [Setup]
AppId={{B9B31282-6F8D-4D74-A8F2-24AE59608A9D}
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Registry]
Root: HKLM; Subkey: Software\My Program; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletekey

[_Code]
function InitializeSetup: Boolean;
var
path: string;
res: Integer;
begin
Result:= True;
if RegValueExists(HKLM, 'Software\My Program', 'InstallPath') then
if RegQueryStringValue(HKLM, 'Software\My Program', 'InstallPath', path) then
if FileExists(path + '\MyProg.exe') then
if MsgBox('Запустить My Program?', mbConfirmation, MB_YESNO) = IDYES then
begin
Exec(path + '\MyProg.exe', '', '', SW_SHOW, ewWaitUntilTerminated, res);
Result:= False;
end
else Result:= False;
end;

S.E.K.T.O.R.
07-11-2009, 00:12
Serega, Вы не знаете как инсталл Сталкера определяет версию Windows XP т.е. Professional или Home Edition, а в висте розрядность (32 или 64)

serg aka lain
07-11-2009, 00:22
Professional или Home Edition »
Присмотритесь к Help'у, к функции GetWindowsVersionEx(Version);


// Disallow installation on Home edition of Windows
if Version.SuiteMask and VER_SUITE_PERSONAL <> 0 then
begin
SuppressibleMsgBox('This program cannot be installed on a Home edition of Windows.',
mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;

// On Windows XP, check for SP2
if Version.NTPlatform and
(Version.Major = 5) and
(Version.Minor = 1) and
(Version.ServicePackMajor < 2) then
begin
SuppressibleMsgBox('When running on Windows XP, Service Pack 2 is required.',
mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;

S.E.K.T.O.R.
07-11-2009, 01:33
Я хочу чтобы в проверке сист. требований кроме " Microsoft Windows XP Service Pack 2" еще было "Microsoft Windows XP Professional Edition Service Pack 2, а в Висте "Windows Vista Ultimate, 32 bits, Service Pack 1"

ADremLIN
07-11-2009, 03:12
Inno Setup Form Designer (ISFD).

У кого-нибудь остались старые версии сабжа? 2.0.5, 2.0.6с, 2.0.7?
У меня есть 2.0.4.

А вот 2.0.8 почему-то падает с ошибкой: Runtime error 216 at 00404036 (У меня Win7) :(

И было бы совсем неплохо какой нибудь русский хелп к нему...

Спасибо.

[Добавлено]

Мануалы к ISFD похоже "умерли" вместе с официальным сайтом программы.
Прогуглил все что мог - ничего не нашел :(
В веб-архиве упоминалось даже о видео-мануале:
(2006/08/20 Added Video-Tutorials for ISFD http://web.archive.org/web/20061023042833/isfd.kaju74.de)

Может у кого завалялось что-нибудь по теме?




© OSzone.net 2001-2012