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

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

Автор: EagleSH
Дата сообщения: 26.12.2008 15:25
SotM

Цитата:
А нельзя чтоли обычный Label затулить с Transparent установленного в True?

можно и так, важен конечный результат, картинка с isxbb на визарде, сверху транспарент.

можешь помочь?
Автор: SotM
Дата сообщения: 26.12.2008 15:30
EagleSH
отписал на пред. странице.
Автор: EagleSH
Дата сообщения: 26.12.2008 15:42
SotM
понял, спс!
Автор: Serega0675
Дата сообщения: 26.12.2008 15:55
SotM

Цитата:
А нельзя чтоли обычный Label затулить с Transparent установленного в True?

Извините, что вмешиваюсь, а можете показать пример, как это сделать?
Автор: SotM
Дата сообщения: 26.12.2008 16:44
Serega0675
Например, вот [more=так:]

Код: procedure InitializeWizard;
var
    Labl :TLabel;
begin
    Labl:=TLabel.Create(WizardForm)
    Labl.Left:=16;
    Labl.Top:=WizardForm.ClientHeight - 24;
    Labl.Width := 128;
    Labl.Height := 24;
    Labl.Autosize:=False;
    Labl.Transparent:=True
    Labl.Caption:= 'Label Test'
    Labl.Parent:=WizardForm;
end;
Автор: EagleSH
Дата сообщения: 26.12.2008 16:45
Sampron
а так не работает
[more]
[Code]

var
WizardImage: TBitmapImage;
FileNameLabel: TLabel;

type
TTimerProc=procedure(h:longword; msg:longword; idevent:longword; dwTime:longword);

function WrapTimerProc(callback:TTimerProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: longword; nIDEvent, uElapse: longword; lpTimerFunc: longword): longword;
external 'SetTimer@user32.dll stdcall';

procedure OnTimer(h:longword; msg:longword; idevent:longword; dwTime:longword);
begin
FileNameLabel.Caption:=WizardForm.FileNameLabel.Caption
end;

procedure InitializeWizard();
begin
WizardForm.Bevel.Hide
WizardForm.Bevel1.Hide
WizardForm.MainPanel.Hide
WizardForm.BeveledLabel.Hide
WizardForm.OuterNotebook.Hide
WizardForm.InnerNotebook.Hide
WizardImage:=TBitmapImage.Create(WizardForm)
WizardImage.AutoSize:=True
WizardImage.Bitmap.LoadFromFile(ExpandConstant('D:\!InnoSetup\Vista_Skin\WizardImage.bmp'))
WizardImage.Parent:=WizardForm

SetTimer(0,0,0,WrapTimerProc(@OnTimer,4))

FileNameLabel:=TLabel.Create(WizardForm)
FileNameLabel.SetBounds(0,100,417,30)
FileNameLabel.AutoSize:=False
FileNameLabel.WordWrap:=True
FileNameLabel.ShowAccelChar:=False
FileNameLabel.Transparent:=True
FileNameLabel.Parent:=WizardForm.InstallingPage
end;
[/more]

все вроде разобрался.... спс!
Автор: Serega0675
Дата сообщения: 26.12.2008 17:20
SotM
Спасибо.
Возможно я не понял о чём вы разговаривали, я думал вы имеете ввиду так.
Не подскажите, как можно, наложить свой рисунок на все страницы мастера и если возможно, то как его сделать на всю форму, чтоб текст было видно, т.е. прозрачный?
Автор: Diawer
Дата сообщения: 26.12.2008 19:03
Sampron

Попробовал и решил еще раз сказать спасибо, за подсказку использовать
BitmapImage.ReplaceColor=
BitmapImage.ReplaceWithColor= – это то самое, что мне было нужно
Автор: Serega0675
Дата сообщения: 26.12.2008 23:24
Здравствуйте, подскажите пожалуйста [more=пример][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: alluser; Description: Создать иконку для всех пользователей; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive
Name: user; Description: Создать иконку только для данного пользователя; GroupDescription: {cm:AdditionalIcons}; Flags: exclusive unchecked

[Dirs]
Name: {commonprograms}\My Program; Attribs: readonly; Tasks: alluser; Flags: uninsalwaysuninstall
Name: {userprograms}\My Program; Attribs: readonly; Tasks: user; Flags: uninsalwaysuninstall

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}

[INI]
Filename: {commonprograms}\My Program\Desktop.ini; Section: .ShellClassInfo; Key: IconFile; String: {app}\MyProg.exe; Tasks: alluser
Filename: {commonprograms}\My Program\Desktop.ini; Section: .ShellClassInfo; Key: IconIndex; String: 0; Tasks: alluser
Filename: {userprograms}\My Program\Desktop.ini; Section: .ShellClassInfo; Key: IconFile; String: {app}\MyProg.exe; Tasks: user
Filename: {userprograms}\My Program\Desktop.ini; Section: .ShellClassInfo; Key: IconIndex; String: 0; Tasks: user

[UninstallDelete]
Type: files; Name: {commonprograms}\My Program\Desktop.ini; Tasks: alluser
Type: files; Name: {userprograms}\My Program\Desktop.ini; Tasks: user

[Icons]
Name: {commonprograms}\My Program\My Program; Filename: {app}\MyProg.exe; WorkingDir: {app}; Tasks: alluser
Name: {userprograms}\My Program\My Program; Filename: {app}\MyProg.exe; WorkingDir: {app}; Tasks: user

[_Code]
var
ErrorCode: Integer;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
if IsTaskSelected('alluser') then
begin
Exec('attrib', ' +h +s ' + '"' + ExpandConstant('{commonprograms}\My Program\desktop.ini') + '"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
end else
if IsTaskSelected('user') then
begin
Exec('attrib', ' +h +s ' + '"' + ExpandConstant('{userprograms}\My Program\desktop.ini') + '"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
end;
end;
end;
[/more]
Как можно поменять команду для выбора Дополнительных задач при тихой установке, сейчас она /Tasks=alluser, а как сделать, чтоб была /alluser.
Пробовал использовать [more=код]function alluser:boolean;
var
CancelButton: TButton;
i: Integer;
begin
for i := 1 to ParamCount do
if ParamStr(i) = '/alluser' then
begin
Result := True;
end else
begin
Result := False;
end;
end;
[/more] всё работает, но только при тихой установке, а при обычной на странице выбора Дополнительных задач пропадает пункт с выбором alluser. Помогите решить задачу.
Автор: sanmon
Дата сообщения: 27.12.2008 02:51
Вижу, помочь мне никто не может по precomp... Подскажите хоть, откуда берете инфу, сам буду изобретать велосипед.
Автор: paul_smART
Дата сообщения: 27.12.2008 08:08
есть мысль по precomp.. пожалуйста подскажите как реализовать
если в в окне wpInstalling сделать дополнительное окно под прогрессбаром
по всей длине до кнопки Cancel снизу и в него выводить результат запуска precomp.exe
уже было бы по красивее.. т.е чтобы запущенное из cmd.exe окно прекомп
выводило результат работы в это созданное под прогрессбаром окно..
или если не понятно описал - как сделать вывод работы отдельно запущенного прекомп
в окно в инсталляторе?...
заранее благодарен за мысли и наводящие предложения :о)
Автор: sanmon
Дата сообщения: 27.12.2008 09:47
Уважаемый paul_smART, если не сложно, поделитесь знанием - как вы срастили precomp и inno?
Автор: paul_smART
Дата сообщения: 27.12.2008 17:40
sanmon
да примитивно так же как все через батник или через секцию Code
к примеру вот так

Код:
procedure extractALL;
var
ErrorCode: Integer;
begin
ShellExec('open',ExpandConstant('{src}\packedbigfile.000.exe'),'-e -d"'+ExpandConstant('{app}')+'" -y -s2', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
ShellExec('open',ExpandConstant('{app}\precomp.exe'),'-r -obigfile.000 bigfile.000.pcf', '', SW_SHOWMINIMIZED, ewWaitUntilTerminated, ErrorCode);
DeleteFile (ExpandConstant('{app}\bigfile.000.pcf'));
ShellExec('open',ExpandConstant('{src}\packedbigfile.001.exe'),'-e -d"'+ExpandConstant('{app}')+'" -y -s2', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
ShellExec('open',ExpandConstant('{app}\precomp.exe'),'-r -obigfile.001 bigfile.001.pcf', '', SW_SHOWMINIMIZED, ewWaitUntilTerminated, ErrorCode);
DeleteFile (ExpandConstant('{app}\bigfile.001.pcf'));
end;
Автор: sanmon
Дата сообщения: 27.12.2008 20:58
paul_smART, спасибо, я примерно так и сделал стандартными средствами inno: прекомп в хидден режиме, а в окошке инсталлера тупо пишется мессага типа "Подождите, идет рекомпрессия (постобработка и т.д.), осталось файлов: хх", но это опять же коряво, несимпатично, ненаглядно и, самое главное НЕЭКОНОМИЧНО для дискового пространства на винте во время инсталла. Было бы круто с прогрессбаром, временем окончания и, лучше всего, сделать рекомпрессию файла прямо во время инсталляции, а не постинсталлом.

Кто бы только подсказал КАК?
Автор: support_star
Дата сообщения: 27.12.2008 21:07
Расшифруйте пожалуйста мне вот эту строчку из скрипта.


Код: Source: "{localappdata}\Rockstar Games\GTA IV\Settings\SETTINGS.CFG"; DestDir: "{localappdata}\Rockstar Games\GTA IV\Settings"; Flags: uninsneveruninstall ignoreversion
Автор: sanmon
Дата сообщения: 27.12.2008 21:54
support_star

Файл, по всей видимости от русификатора gta4? Он просто втыкается в инсталлер, потому что без него русского языка в игре не будет. Только я, как понимаю, во время компиляции он валяется в своей "родной" папке - просто недосуг было кому-то его переносить в отдельную папку для компиляции. Может и ошибаюсь, только ничего глобального с ним не происходит, просто сборка его в инсталлер.

Добавлено:
Вот еще вопрос ДЛЯ ВСЕХ, где почерпнуть знания по написанию кода для inno? По-русски желательно.
Автор: EagleSH
Дата сообщения: 27.12.2008 22:39
господа, подскажите решение: запускаем setup, если на системном диске меньше 2 гигов к примеру - сразу мессейджбокс, типа нет места на системном диске, по нажатию на OK, просто закрываемся.
Автор: paul_smART
Дата сообщения: 28.12.2008 05:04
кстати для понимания или разбора принципа precomp очень недеюсь подойдет содержимое вот етого файлика _http://schnaader.info/paq8o8pre.zip ибо наличие в архиве precomp.dll и precomp.h подозревает думать что используя описание функций длл-ки ее можно припаять к инне сетур...
Автор: STALKER_HIGHLANDER
Дата сообщения: 28.12.2008 13:23
clemenco

Спасибо большое за помощь (замена строки в файле).

sanmon

Загляни пожалуйста в личку.
Автор: Olowokandi
Дата сообщения: 28.12.2008 16:45
Привет, подскажите пожалуйста, кто в курсе, есть такой участок кода в моем скрипте:
procedure InitializeWizard();
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
end ;

Он вставляет заместо SmallImage наверху справа, изображение длиною во все инсталляционное меню, в качестве фона, но возникает одна проблема текст который расположен на этом пространстве имеет белую прямоугольную обводку, как ее убрать, перерыл хелп так и не нашел, подскажите пожалуйста
Автор: EagleSH
Дата сообщения: 28.12.2008 17:20
Olowokandi
[more]
var
PageNameLabel, PageDescriptionLabel: TLabel;


procedure InitializeWizard();
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clWhite;
Font.Style := [fsBold];
ShowAccelChar := False;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clWhite;
ShowAccelChar := False;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
end;
[/more]
Автор: Olowokandi
Дата сообщения: 28.12.2008 17:48
Спасибо а еще как сменить шрифт и есго стиль только в заголовк (т.е. в в самой верхней панели окна)
Автор: Serega0675
Дата сообщения: 28.12.2008 18:49
EagleSH
Спасибо и от меня, а как переделать этот код для расширенной версии от ResTools?
Автор: EagleSH
Дата сообщения: 28.12.2008 19:31
Serega0675
что имеется ввиду под расширенная версия от рестулс?

я токо их компилер и анигиф смотрел, то что интересно типа было....
Автор: Serega0675
Дата сообщения: 28.12.2008 20:38
EagleSH

Цитата:
я токо их компилер
Вот именно на нём я компилировал и он ругается на [more=скриншот] [/more]
Автор: Diawer
Дата сообщения: 28.12.2008 20:53
Подскажите, кто разобрался, в предыдущих частях форума это обсуждалось, но я не понял, как сделать, что бы пользователь не смог распаковать установщик при помощи анпакеров типа (Inno Setup Unpacker (innounp)), поскольку я не считаю правильным, что вышеупомянутый пользователь может извлечь содержимое инсталлятора в обход установщику (Inno Setup) на создание которого уходит много времени и сил.
Автор: Serega0675
Дата сообщения: 28.12.2008 21:01
Diawer
Вот есть пример от ResTools, почему-то только он у меня работает, а на другие, которые есть в примерах, выдаёт ошибки...
Автор: SotM
Дата сообщения: 28.12.2008 21:19
Diawer
Ну сам код он всё равно не сможет распаковать, лишь только ресурсы можно вытянуть.
Автор: equis
Дата сообщения: 29.12.2008 04:17

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

Кстати, а в чем тут криминал? Ну вот даже если бы кто-то захотел это сделать?.. Да мало ли по каким причинам: скажем, человек опасается установки непрошенных/вредоносных модулей, антивирусу не доверяет.
В инсталляторе разве есть что-то такое, чего никто кроме тебя не должен видеть?
Просто интересно, почему ты так переживаешь за это...

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


Цитата:
пользователь может извлечь содержимое инсталлятора в обход установщику (Inno Setup) на создание которого уходит много времени и сил

Используя Inno Setup, скрыть все свои ноу-хау вряд ли получится.
Автор: EagleSH
Дата сообщения: 29.12.2008 09:30
equis

Цитата:
скрыть все свои ноу-хау вряд ли получится

смотря что скрывать, скрыть всегда можно

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


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