Войти

Показать полную графическую версию : [архив] Скрипты 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

STRAYKER
25-10-2010, 20:07
Весь скрипт ?

Та я сам незнаю в чем проблемма
1.Должно предложить содать папку в меню " ПУСК " оно не предлагает
2.Должно предложить содать ярлык --- тоже не предлагает
так что делать

Весь скрипт ?

Та я сам незнаю в чем проблемма
1.Должно предложить содать папку в меню " ПУСК " оно не предлагает
2.Должно предложить содать ярлык --- тоже не предлагает
так что делать

STRAYKER
25-10-2010, 20:24
У меня не создает ярліки и папку в пуск
хотя в скрипте прописано чтобі оно создало

Imitri7
25-10-2010, 21:58
Habetdin
есть скрипт [_Code]
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

procedure InitializeWizard();
begin
//Выносим кнопку "Отмена" на передний план
WizardForm.CancelButton.BringToFront;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then
begin
WizardForm.BorderStyle:=bsDialog;
WizardForm.MainPanel.Visible:=False;
WizardForm.Width:=ScaleX(320);
WizardForm.Height:=ScaleY(127);
WizardForm.InnerNotebook.Left:=ScaleX(7);
WizardForm.InnerNotebook.Top:=ScaleY(7);
WizardForm.InnerNotebook.Width:=ScaleX(300);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(17);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(37);
WizardForm.ProgressGauge.Left:=ScaleX(0);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(122);
WizardForm.CancelButton.Top:=ScaleY(70);
WizardForm.Left:=GetSystemMetrics(16)-ScaleX(330);
WizardForm.Top:=GetSystemMetrics(17)-ScaleX(110);
end;
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;{Размер окна по горизонтали}
WizardForm.Height:=392;{Размер окна по вертикали}
WizardForm.Position:=poScreenCenter; {Возврат в исходное состояние}
end
end;

как наложить текстуру на кнопку отмены в этом скрипте с помошью этого [ code]
const
ButtonWidth = 80; //Указываем размер кнопок
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

var
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
case TLabel(Sender).Tag of
bidBack: Button:=WizardForm.BackButton
bidNext: Button:=WizardForm.NextButton
bidCancel: Button:=WizardForm.CancelButton
bidDirBrowse: Button:=WizardForm.DirBrowseButton
bidGroupBrowse: Button:=WizardForm.GroupBrowseButton
else
Exit
end
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;

begin
Panel:=TPanel.Create(WizardForm)
Panel.Left:=AButton.Left
Panel.Top:=AButton.Top
Panel.Width:=AButton.Width
Panel.Height:=AButton.Height
Panel.Tag:=AButtonIndex
Panel.Parent:=AButton.Parent
ButtonPanel[AButtonIndex]:=Panel

Image:=TBitmapImage.Create(WizardForm) //Рисунок который ложится на кнопку
Image.Width:=160 //Обязательно прописать оригинальный размер рисунка
Image.Height:=23
Image.Enabled:=False
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
Image.Parent:=Panel
ButtonImage[AButtonIndex]:=Image

with TLabel.Create(WizardForm) do begin
Tag:=AButtonIndex
Parent:=Panel
Width:=Panel.Width
Height:=Panel.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

Labl:=TLabel.Create(WizardForm) //Текст кнопок
Labl.Left:=23 //Указываем положение текста
Labl.Top:=5
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite //Цвет текста
Labl.Caption:=AButton.Caption
Labl.OnClick:=@ButtonLabelClick
Labl.OnDblClick:=@ButtonLabelClick
Labl.OnMouseDown:=@ButtonLabelMouseDown
Labl.OnMouseUp:=@ButtonLabelMouseUp
Labl.Parent:=Panel
ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption:=AButton.Caption
ButtonPanel[AButtonIndex].Visible:=AButton.Visible
ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=True
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled:=False
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width / 2 - ButtonLabel[bidBack].Width / 2);
ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width / 2 - ButtonLabel[bidNext].Width / 2);
ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width / 2 - ButtonLabel[bidCancel].Width / 2);
ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width / 2 - ButtonLabel[bidDirBrowse].Width / 2);
ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width / 2 - ButtonLabel[bidGroupBrowse].Width / 2);
end;

procedure InitializeWizard();
begin
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Left:=337
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=337
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;



если просто объединить то вот что выйдет

http://s001.youpic.su/pictures/1288026000/45b8f620590a88f7be3eb9cabe6b8181.pnghttp://s001.youpic.su/pictures/1288026000/a96ac9b8663240d843858cc83b2afb8b.pnghttp://s001.youpic.su/pictures/1288026000/a4ea43b50f19c1d321d159332b6b37da.pnghttp://s001.youpic.su/pictures/1288026000/bd9674c77bf2c14ed1d1e5f4d51759ca.png

chuvak
25-10-2010, 22:16
здравствуйте я здесь новенький и хочу узнать как установить скрипт Need for Speed™ Undercover.iss v 2.2 (Final) и другие ???я умею делать простые репаки без всяких картинок и.т.д Но я хочу научиться делать такие как в этом скрипте который я указал выше !!! очень надеюсь на вашу помощь.

shao
25-10-2010, 22:23
А в данном случае »

То есть , если я правильно понял для удаления раздела используется флаг uninsdeletekey
Для удаления параметров - флаг uninsdeletevalue

Но дело в том , что я ..
Пробовал ставить флаги uninsdeletekey, uninsdeletekeyifempty, uninsdeletevalue, комбинировал их - всё безрезультатно... »

Может ли влиять на удаление параметров реестра то , что при деинсталляции программы сразу не удаляются несколько файлов , которые задействованы системой/которые висят в процессах, а также зарегистрированные DLL-ки. А полностью удаляются эти файлы только после перезагрузки системы. Перезагрузку предлагает сама программа после отработки деинсталляции, поскольку в секции [Files]
для этих файлов указан флаг uninsrestartdelete .

И подскажите пожалуйста, как альтернативу, можно ли использовать такой вариант для удаления раздела реестра ?
[UninstallRun]
Filename: {sys}\cmd.exe; Parameters: /c Reg Delete "HKCU\Software\MyProg" /f; Flags: runhidden

kenny_danger
25-10-2010, 23:23
здравствуйте уважаемые пользователи
хочу задать вам такие вопросы

1----------------------------------------
допустим у меня в скрипте
DefaultDirName={pf}\Steam\steamapps\your_account\counter-strike source\
но вовремя установки при выборе путя куда устанавливать данную программу автоматом дописывается "counter-strike source"
как сделать так что это не дописывалось

2----------------------------------------
как сделать так чтобы после выбора пользователем определенной папки установки программы в ней удалялись определенные
файлы или папки перед копированием самой программы через инсталлятор

serg aka lain
25-10-2010, 23:49
Может ли влиять на удаление параметров реестра то , что при деинсталляции программы сразу не удаляются несколько файлов , которые задействованы системой/которые висят в процессах, а также зарегистрированные DLL-ки. А полностью удаляются эти файлы только после перезагрузки системы. Перезагрузку предлагает сама программа после отработки деинсталляции, поскольку в секции [Files]
для этих файлов указан флаг uninsrestartdelete . »
Возможно они и загружены(используются).
И подскажите пожалуйста, как альтернативу, можно ли использовать такой вариант для удаления раздела реестра ? »
Можно конечно, только имхо cmd нужно юзать тогда, когда стандартными средствами никак ...
Еще можно попытаться закрыть программу перед удалением.
Вот ещё вариант, в принципе тоже самое uninsdeletekey

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
RegDeleteKeyIncludingSubkeys(HKCU, 'Software\MyProg');
end;


kenny_danger

как сделать так что это не дописывалось »
[Setup]
AppendDefaultDirName=False
как сделать так чтобы после выбора пользователем определенной папки установки программы в ней удалялись определенные
файлы или папки перед копированием самой программы через инсталлятор »
[InstallDelete]
Type: files; Name: "{app}\File.txt"
Type: filesandordirs; Name: "{app}\Path";

shao
26-10-2010, 00:05
serg aka lain, Благодарю, за предложенные варианты!

Еще можно попытаться закрыть программу перед удалением. »
Об этом я тоже думал, но не знаю как сделать стандартными средствами. Только через CMD.
Хотя , перед деинсталляцией программы пробовал все процессы вручную остановить и все-равно раздел реестра не удалялся.

serg aka lain
26-10-2010, 00:43
Хотя , перед деинсталляцией программы пробовал все процессы вручную остановить и все-равно раздел реестра не удалялся. »
Тогда через перезагрузку.

Вариант с RegDeleteKeyIncludingSubkeys(HKCU, 'Software\MyProg') помог?

shao
26-10-2010, 01:06
Вариант с RegDeleteKeyIncludingSubkeys(HKCU, 'Software\MyProg') помог? »

Я не пробовал ещё. Нет возможности, поскольку я на работе.
Попробую - обязательно отпишусь.

З.Ы. Раз уж такое дело, не могли бы ещё написать код на случай , если это будет параметр реестра , а не раздел.

chuvak
26-10-2010, 12:02
Здравствуйте это снова я мне так и не помогли с объединением скрипта !!! я сам начал подставлять как по обычной сборке , и когда начал комплирировать и вышла ошибка function BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PAnsiChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload'; что это я не знаю ???

STRAYKER
26-10-2010, 13:18
когда добавляю скрипт с картинкой на весь инсталятор то оно не выносит ярлыков и не создаёт папку в пуск
А когда убираю скрипт с кодом на отоброжение картинок на всех страницах инстолятора оно работает нормально чо за трабл ???

THE GUILTY GOD
26-10-2010, 15:12
Помагите что это и как исправить.
Появились при написании кода на проценты

Habetdin
26-10-2010, 17:06
если просто объединить то вот что выйдет »
Прикрепил к сообщению..
[hr]THE GUILTY GOD, 1.jpg »
У вас дублируется процедура InitializeWizard(), нужно их объединить.
[hr]чо за трабл ??? »
Телепаты в отпуске :not-me:

Imitri7
26-10-2010, 18:33
Habetdin, спасиб большое, а еще как сделать чтоб окошко нельзя перемешать по экрану?

serg aka lain
26-10-2010, 18:49
если это будет параметр реестра , а не раздел. »
RegDeleteValue(HKCU, 'Software\MyProg', 'Name');

STRAYKER
26-10-2010, 19:34
Habetdin,
ПОМОГИТЕ
когда добавляю скрипт с картинкой на весь инсталятор то оно не выносит ярлыков и не создаёт папку в пуск
А когда убираю скрипт с кодом на отоброжение картинок на всех страницах инстолятора оно работает нормально чо за трабл ??? »

Serega
26-10-2010, 20:08
как сделать чтоб окошко нельзя перемешать по экрану? »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes

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

[Code]
function GetSystemMenu(Wnd: HWND; bRevert: Boolean): HWND; external 'GetSystemMenu@user32.dll stdcall';
function RemoveMenu(hMenu: HWND; uPosition: Integer; uFlags: Longint): Boolean; external 'RemoveMenu@user32.dll stdcall';

procedure InitializeWizard();
begin
RemoveMenu(GetSystemMenu(WizardForm.Handle, False), $F010, 0);
end;


когда добавляю скрипт с картинкой на весь инсталятор то оно не выносит ярлыков и не создаёт папку в пуск
А когда убираю скрипт с кодом на отоброжение картинок на всех страницах инстолятора оно работает нормально чо за трабл ??? »
Посмотрите внимательно свой скрипт, видимо где-то происходит ошибка при добавлении кода с картинкой...

STRAYKER
26-10-2010, 20:38
Serega,
а можно я сюда скину его (скрипт) а вы посмотрите ???

Потомушто я в них неочинь хорошо шарю :sorry: :(

Одна надежна только на вас

Habetdin
26-10-2010, 20:46
а можно я сюда скину его (скрипт) а вы посмотрите ??? »
Не можно, а нужно :)
О чем писалось вчера:
Выложите проблемную часть скрипта »




© OSzone.net 2001-2012