Войти

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


Страниц : 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 [160] 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

valyok666
29-09-2011, 17:46
Devils Night, почитай может тут что нибудь найдёшь (http://dccp.ru/editor)
пример с исходника (http://rghost.ru/23527831)
нашёл код смотри ниже:

[Files]
Source: "..\compiled\Settings\custom_menu.xml"; DestDir: "{app}\Settings"; Flags: ignoreversion

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "startup"; Description: "{cm:CreateStartupIcon}"; GroupDescription: "{cm:AdditionalIcons}";

[Icons]
Name: "{group}\FlylinkDC++{code:Postfix| }"; Filename: "{app}\FlylinkDC{code:Postfix|_}.exe"; WorkingDir: "{app}"
Name: "{userstartup}\FlylinkDC++{code:Postfix| }"; Filename: "{app}\FlylinkDC{code:Postfix|_}.exe"; Tasks: startup; WorkingDir: "{app}"
Name: "{group}\FlylinkDiscover"; Filename: "{app}\FlylinkDiscover.exe"; WorkingDir: "{app}"
Name: "{group}\О программе"; Filename: "{app}\Readme.rtf"
Name: "{group}\{cm:ProgramOnTheWeb,FlylinkDC++{code:Postfix| }}"; Filename: "http://www.flylinkdc.ru"
Name: "{group}\{cm:UninstallProgram,FlylinkDC++{code:Postfix| }}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\FlylinkDC++{code:Postfix| }"; Filename: "{app}\FlylinkDC{code:Postfix|_}.exe"; Tasks: desktopicon; WorkingDir: "{app}"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\FlylinkDC++{code:Postfix| }"; Filename: "{app}\FlylinkDC{code:Postfix|_}.exe"; Tasks: quicklaunchicon; WorkingDir: "{app}"

[Run]
Filename: "{app}\FlylinkDC{code:Postfix|_}.exe"; Description: "{cm:LaunchProgram,FlylinkDC++{code:Postfix| }}"; Flags: nowait postinstall skipifsilent
Filename: "http://flylinkdc.blogspot.com/"; Description: "Принять участие в тест-драйве свежего FlylinkDC++!"; Flags: nowait postinstall shellexec skipifsilent

[Code]
procedure AboutButtonOnClick(Sender: TObject);
begin
MsgBox('(c) 2006-2010 FlylinkDC++ Team', mbInformation, mb_Ok);
end;

procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://flylinkdc.blogspot.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure CreateAboutButtonAndURLLabel(ParentForm: TSetupForm; CancelButton: TNewButton);
var
AboutButton: TNewButton;
URLLabel: TNewStaticText;
begin
AboutButton := TNewButton.Create(ParentForm);
AboutButton.Left := ParentForm.ClientWidth - CancelButton.Left - CancelButton.Width;
AboutButton.Top := CancelButton.Top;
AboutButton.Width := CancelButton.Width;
AboutButton.Height := CancelButton.Height;
AboutButton.Caption := '&About...';
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := ParentForm;

URLLabel := TNewStaticText.Create(ParentForm);
URLLabel.Caption := 'http://flylinkdc.blogspot.com';
URLLabel.Cursor := crHand;
URLLabel.OnClick := @URLLabelOnClick;
URLLabel.Parent := ParentForm;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(7);
end;

function Postfix(Separator: String): String;
begin
if Is64BitInstallMode then begin
Separator := Separator + 'x64';
Result := Separator;
end;
end;

var
UserPage: TInputQueryWizardPage;
DataDirPage: TInputDirWizardPage;


function NextButtonClick(CurPageID: Integer): Boolean;
begin
{ Validate certain pages before allowing the user to proceed }
if CurPageID = DataDirPage.ID then begin
//if UserPage.Values[0] = '' then
//begin
// MsgBox('You must enter your name.', mbError, MB_OK);
// Result := False;
//end
//else
begin
if DataDirPage.Values[0] = '' then
begin
DataDirPage.Values[0] := 'C:\DCDownloads';
MsgBox('Вы должны указать каталог для скачки файлов!', mbError, MB_OK);
Result := false;
end
else
RegWriteStringValue(HKEY_CURRENT_USER, 'Software\FlylinkDC++', 'DownloadDir', DataDirPage.Values[0]);
RegWriteStringValue(HKEY_CURRENT_USER, 'Software\FlylinkDC++','Nick', UserPage.Values[0]);
if (DirExists(DataDirPage.Values[0]) = false) then
begin
if (CreateDir(DataDirPage.Values[0]) = false) then
begin
MsgBox('Ошибка создания каталога для скачки!', mbError, MB_OK);
Result := false;
end
else
Result := true;
end
else
Result := true;
end;
end
else
Result := True;
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
{ Store the settings so we can restore them next time }
SetPreviousData(PreviousDataKey, 'Name', UserPage.Values[0]);
SetPreviousData(PreviousDataKey, 'DataDir', DataDirPage.Values[0]);
end;

procedure InitializeWizard();
begin
WizardForm.TypesCombo.Visible := False;
CreateAboutButtonAndURLLabel(WizardForm, WizardForm.CancelButton);
UserPage := CreateInputQueryPage(wpSelectDir,
'Информация о пользователе', 'Какой ник у Вас в DC++?',
'Укажите ник и нажите "Далее"'+ #13 +#13 +'Допустимые символы в нике:' +#13 +'0123456789'+ #13 + 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'+ #13 +'()+-=[]^_{})"');
UserPage.Add('Имя пользователя в DC++:', False);


DataDirPage := CreateInputDirPage(wpSelectDir+1,
'Выбор каталога для загрузки', 'Где будут храниться загружаемые файлы?',
'Укажите каталог для скачки (при старте он будет автоматически "расшарен")',
False, 'DCDownloads');
DataDirPage.Add('');

{ Set default values, using settings that were stored last time if possible }
UserPage.Values[0] := GetPreviousData('Name', '');
DataDirPage.Values[0] := GetPreviousData('DataDir', 'C:\DCDownloads');
end;

procedure InitializeUninstallProgressForm();
begin
CreateAboutButtonAndURLLabel(UninstallProgressForm, UninstallProgressForm.CancelButton);
end;

procedure DeinitializeUninstall();
var ErrorCode : Integer;
begin
if MsgBox('Спасибо за использование FlylinkDC++!' #13 'Вы можете сообщить о причине удаления программы и Ваше сообщение будет рассмотрено разработчиками...', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = idYes
then ShellExec('open', 'http://flylinkdc.blogspot.com/2010/04/flylinkdc-uninstall-feedback.html', '', '', SW_SHOW, ewNoWait, ErrorCode);
end;

VASYAKRN
30-09-2011, 00:01
Как создать лейб старт-время запуска сетапа и конец-конец распаковки как в закосе на блека от ник1967

Gugle
30-09-2011, 11:18
Gugle, Попробуй, »
Это не совсем то, что надо. :(

Для примера выложил скрины того, что надо и того, что выводит.

Из твоего предложения Лександер, понял, что в дальнейшем если захочу использовать какую нить "нестандартную" dll в проекте inno, то для этого, мне надо открыть Delphi перелопатить dll с возможностью использования стандартных типов и только после этого запихивать ее в проект inno и жить счастливо. Я прав?

kindza811
30-09-2011, 15:25
как мне сделать также как показано на скрине
http://i27.fastpic.ru/big/2011/0930/bf/0534eba5731a692d7ab596e3c55698bf.jpg (http://fastpic.ru/)

insombia
30-09-2011, 15:31
kindza811 http://forum.oszone.net/post-1688320-1737.html

Vista-w
30-09-2011, 19:28
insombia,
Где у тебя откат установки или CheckError ?
У тебя софт ставится если даже архива arc'a для ISDone нет.

insombia
30-09-2011, 19:45
Vista-w откат уже есть
У тебя софт ставится если даже архива arc'a для ISDone нет.
знаешь как исправить?

Gnom_aka_Lexander
30-09-2011, 19:52
Из твоего предложения Лександер, понял, что в дальнейшем если захочу использовать какую нить "нестандартную" dll в проекте inno, то для этого, мне надо открыть Delphi перелопатить dll с возможностью использования стандартных типов и только после этого запихивать ее в проект inno и жить счастливо. Я прав? »
Эээ, а что бывают стандартные? dll для инно пишутся именно для того, чтобы "научить" ее вещам нестандартным.

Megalol
30-09-2011, 21:21
1) Как адаптировать этот скрипт [Setup] AppName=MyApp AppVerName=MyApp DefaultDirName={pf}\MyApp Compression=lzma2/ultra [Files] Source: innocallback.dll; Flags: dontcopy Source: Setup\*; DestDir: {app}; Flags: recursesubdirs ignoreversion overwritereadonly; [code] type TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord); var PercentsTimer: LongWord; PercentsLabel: TLabel; function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall'; function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32'; function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload'; Function NumToStr(Float: Extended): String; Begin Result:= Format('%.n', [Float]); StringChange(Result, ',', '.'); while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do SetLength(Result, Length(Result)-1); End; Procedure PercentsProc(h, msg, idevent, dwTime: Longword); Begin with WizardForm.ProgressGauge do begin PercentsLabel.Caption:= 'Выполнено ' + NumToStr((Position*100)/Max) + ' %'; end; End; procedure DeinitializeSetup(); begin KillTimer(0, PercentsTimer); end; procedure InitializeWizard(); begin PercentsLabel:= TLabel.Create(WizardForm); with PercentsLabel do begin Left:= WizardForm.ProgressGauge.Left; Top:= WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10); Width:= WizardForm.StatusLabel.Width; Height:= WizardForm.StatusLabel.Height; AutoSize:= False; Transparent := True; Parent:= WizardForm.InstallingPage; end; end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssInstall then begin PercentsTimer:= SetTimer(0, 0, 100, WrapTimerProc(@PercentsProc, 4)); end; end; для юникод версии? У меня на ней проценты в минус уходят!
2) Как сделать чтобы сплэш-заставка показывалась\грузилась параллельно с самим инсталлером (все сплеши что я видел уходят в "Sleep" на время показа). И как реализовать такой сплэш (показ видео или гиф-анимации), который бы вызывался без проблем из InitializeSetup() - у меня пишет что типа WizardForm не создан - идите лесом?
3) Как убить нужный мне процесс (он выполняется парал-но с самим Инно) через 5 сек?
4) Как исправить это (http://farm7.static.flickr.com/6169/6175390949_ea49caac2c.jpg) в черном скине Tiger на Win7. Должно быть так как напротив PotPlayer (белая стрелка слева). Цвета фона и текста менять нельзя. Только сами значки раскрытия папок?
5) Как защитить (паролем или еще как, чтобы их нельзя было спереть) временные файлы Инно (распаковываемые в папку Temp).
6) Как при нажатии определенной комбинации клавиш пропустить (то есть как-бы пролистывая стр-цы, эмулируя нажатие кнопки далее, правда проблема в том что там еще надо выбрать то что соглашаешься с лиц-зией) нужные (хотя скорее ненужные тогда :D) страницы инсталлятора (интересует страница с лицензией).

Dark_Delphin
30-09-2011, 21:36
Всем доброго вечера.

Подскажите пожалуйста как сделать так как вот на картинку?
Как я думаю ля начала надо убрать стандартную?

http://img137.imageshack.us/img137/1351/55062493.png

Заранее спасибо.

No4noylis
30-09-2011, 21:55
Как я думаю ля начала надо убрать стандартную? »
Совершенно верно, wizardform.BorderStyle:=bsNone; и стандартного не будет. Затем добавишь через ботву кнопочки какие нужны и все готово :)
знаешь как исправить? »
Знаю!Скорее всего в скрипте у тебя условие для запуска установки софта выглядит так: If Soft.Checked then (Soft- чекбокс, который как я думаю ты создавал), а тебе нужно написать так: If (Soft.Checked) and (ISDoneError=false) then, тогда при отмене установки, ошибки или еще чего там, софт ставиться не будет :)

Dark_Delphin
30-09-2011, 21:58
А есть пример уже готовый, тех кнопочок?

insombia
30-09-2011, 22:15
No4noylis пишет что and (ISDoneError=false) then неверный код или что-то такое

Gnom_aka_Lexander
30-09-2011, 22:17
ntrx, Тут, я думаю, чтото такое сделано:


var
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;

procedure Panel1Click(Sender: TObject);
begin
//действие по нажатию
end;

procedure Panel2Click(Sender: TObject);
begin
//действие по нажатию
end;

procedure Panel3Click(Sender: TObject);
begin
//действие по нажатию
end;

procedure InitializeWizard();
begin
{ Panel1 }
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Name := 'Panel1';
Parent := WizardForm.WelcomePage;
Left := ScaleX(16);
Top := ScaleY(144);
Width := ScaleX(25);
Height := ScaleY(25);
BevelOuter := bvSpace;
Caption := 'э';
Color := 48892;
Font.Color := clWindowText;
Font.Height := 30;
Font.Name := 'Wingdings';
Font.Style := [];
ParentBackground := False;
ParentFont := False;
OnClick := @Panel1Click;
end;

{ Panel2 }
Panel2 := TPanel.Create(WizardForm);
with Panel2 do
begin
Name := 'Panel2';
Parent := WizardForm.WelcomePage;
Left := ScaleX(48);
Top := ScaleY(144);
Width := ScaleX(25);
Height := ScaleY(25);
BevelOuter := bvSpace;
Caption := '0';
Color := 48892;
Font.Color := clWindowText;
Font.Height := 30;
Font.Name := 'Webdings';
Font.Style := [];
ParentBackground := False;
ParentFont := False;
OnClick := @Panel2Click;
end;

{ Panel3 }
Panel3 := TPanel.Create(WizardForm);
with Panel3 do
begin
Name := 'Panel3';
Parent := WizardForm.WelcomePage;
Left := ScaleX(80);
Top := ScaleY(144);
Width := ScaleX(25);
Height := ScaleY(25);
BevelOuter := bvSpace;
Caption := '4';
Color := 48892;
Font.Color := clWindowText;
Font.Height := 30;
Font.Name := 'Webdings';
Font.Style := [];
ParentBackground := False;
ParentFont := False;
OnClick := @Panel3Click;
end;
end;

Символа динамика не нашел, но гдето тут, вроде видел, как его получить, аналогичным способом.

пишет что and (ISDoneError=false) then неверный код или что-то такое »
and (not ISDoneError) then - Так правильно бедет

Dark_Delphin
30-09-2011, 22:29
Лександер, спасибо. Я всё вроде правильно сделла, только при нажатии ничего не происходит.
Как исправить или где я ошибся?

valyok666
01-10-2011, 00:20
ntrx, скорее всего там скин=)хотя не уверен был бы у тебя скрипт тогда можно было посмотреть

insombia
01-10-2011, 12:17
ntrx вот все файлы со скрипта нужно будет их как-то собрать и будет тебе счастье http://rghost.ru/23743801

Dark_Delphin
01-10-2011, 13:50
insombia, спасибо.

insombia, а скрипта нету к нему? :blush:
Я плагиатить не буду.

insombia
01-10-2011, 14:25
insombia, спасибо.
insombia, а скрипта нету к нему?
Я плагиатить не буду. »
нету у меня скрипта

onlainserver
01-10-2011, 15:39
как сделать черный установщик не подскажите?




© OSzone.net 2001-2012