PDA

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

El Sanchez
09-09-2011, 13:13
Допустим устанавливаем программу на диск С в папку Test, а в реестр нужно занести два значения
1-е это буква диска C
2-е это название папки в которую установили программу Test
[HKEY_LOCAL_MACHINE\SOFTWARE\Test program]
"Path"="C:\\"
"Directory"="Test" »

Polsta,

[Registry]
Root: HKLM; Subkey: "Software\Test program"; ValueType: string; ValueName: Path; ValueData: {drive:{app}}\
Root: HKLM; Subkey: "Software\Test program"; ValueType: string; ValueName: Directory; ValueData: {code:ExtractFileName|{app}}

R.i.m.s.k.y.
09-09-2011, 13:19
{code:ExtractFileName|{app}} »
что за конструкция с вертикальной палочкой?

El Sanchez
09-09-2011, 15:23
что за конструкция с вертикальной палочкой? »
Help -> Pascal Scripting -> Scripted Constants

VinTagE
09-09-2011, 19:32
Здравствуйте.
Хочу представить вам свою наработку:
[hr]
EXArchives.dll v.1.0b от VinTagE
Описание:
* Это распаковка архивов.
* 1 прогресс бар показывает распаковку архивов
* 2 прогресс бар показывает обработку архивов
* Сделал плавный индикатор (2 прогресс бар) обработки архивов
* Версия EXArchives.dll v.1.0b
Автор - VinTagE
-----------
Скачать (http://narod.ru/disk/24573827001/EXA.rar.html)
-----------
[hr]
P.S.: Прошу протестировать и если найдёте какие нибудь ошибки, сообщите мне.
Спасибо за внимание =)

Jim_Di_Griz
09-09-2011, 20:11
Добрый день.
Есть вопрос:
Программа при работе создает ветку в реестре, нужно во время деинсталляции программы удалять ветку с ключами внутри.
Как это можно сделать средствами Inno setup?
Спасибо.

Habetdin
09-09-2011, 20:23
Jim_Di_Griz, используйте флаг uninsdeletekey:
[Registry]
Root: HKLM; SubKey: Software\My Program; Flags: uninsdeletekey

Jim_Di_Griz
09-09-2011, 21:21
Jim_Di_Griz, используйте флаг uninsdeletekey:
Спасибо, все работает.

VaZz9
09-09-2011, 21:59
Здравствуйте, помогите решить задачу, нужно заменить при установке в уже имеющемся файле .xml рандомное значение между двумя строками (Ник)
<Nick type="string">ТутЛюбойНик</Nick>. Как это можно реализовать. Спасибо.

andrejshapal
10-09-2011, 19:28
Помогите плиз прикрутить распаковку arc к скрипту...
http://rghost.ru/21107801
Пробовал брать скрипт на сайте freearc, использовать IssDone, но везде большие скрипты, и на определённых местах выдаёт ошибки. Замахался с ними. Возможно есть простой скрипт?

Sollar
10-09-2011, 19:57
[Types]
; переменная для цикла
#define l

; итак: пишем подпрограмму, которая будет делать все что нам нужно l раз
#sub AddDescription
Name: {code:gets|{#l}}; Description: {code:gets|{#l}};
#endsub

; создаем цикл с вызовом нашей подпрограммы
#for {l = 1; l < 3; l++} AddDescription

[Components]
Name: n1; Description: gdsgdg; types: {code:gets1};
Name: n2; Description: dsfgsg; types: {code:gets2};


var
s1, s2, str : string;
i: integer;

function InitializeSetup(): Boolean;
begin
for I := 1 to 2 do
begin
str:='org'+inttostr(i);
if GetIniString(str, 'ex1', 'Error', 'C:\временная\example.ini') = '1' then
s1 :=s1 + GetIniString(str, 'org', 'Error', 'C:\временная\example.ini');
if GetIniString(str, 'ex2', 'Error', 'C:\временная\example.ini') = '1' then
s2 :=s2 +' ' + GetIniString(str, 'org', 'Error', 'C:\временная\example.ini');
end;
Result := True;
end;

function Gets1(Param: String): String;
begin
Result := s1;
end;


function Gets2(Param: String): String;
begin
Result := s2;
end;

function Gets(Param: String): String;
begin
str:= 'org'+ param;
Result := GetIniString(str, 'org', 'fgsegfsdgr', 'C:\временная\example.ini');
end;


Почему при записи типов в компоненты пишет, что не существует такого типа?! что не так? даже если явно значения задавать

Devils Night
11-09-2011, 10:09
В общем имеется код ->

[ Code]
type
HSTREAM=DWORD;
TTimerProc=procedure(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
var
MP3List:TStringList;
CurrentMP3:integer;
hMP3:HWND;
TimerID:LongWord;

function SetTimer(hWnd:HWND;nIDEvent,uElapse:UINT;lpTimerFunc:LongWord{TFNTimerProc}):UINT; external 'SetTimer@user32.dll stdcall delayload';
function KillTimer(hWnd:HWND;uIDEvent:UINT):BOOL; external 'KillTimer@user32.dll stdcall delayload';
function BASS_ChannelIsActive(Handle:HWND):DWORD; external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_SetConfig(Option,Value:DWORD):DWORD; external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_Init(Device:integer;Freq,Flags:DWORD;Win:HWND;CLSID:integer):boolean; external 'BASS_Init@files:bass.dll stdcall delayload';
function BASS_StreamCreateFile(Mem:BOOL;f:PChar;Offset:DWORD;Length:DWORD;Flags:DWORD):HSTREAM; external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_StreamFree(Handle:HWND):boolean; external 'BASS_StreamFree@files:bass.dll stdcall';
function BASS_ChannelPlay(Handle:HWND;Restart:boolean):boolean; external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_Start: Boolean; external 'BASS_Start@files:bass.dll stdcall';
function BASS_Stop: Boolean; external 'BASS_Stop@files:bass.dll stdcall';
function BASS_Free: Boolean; external 'BASS_Free@files:bass.dll stdcall delayload';
function WrapTimerProc(CallBack:TTimerProc;ParamCount:integer):LongWord; external 'wrapcallback@files:innocallback.dll stdcall';

procedure TimerTick(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
begin
if BASS_ChannelIsActive(hMP3)=0 then begin
BASS_Stop;
BASS_StreamFree(hMP3);
hMP3:=BASS_StreamCreateFile(False,PChar(MP3List.Strings[CurrentMP3]),0,0,0);
BASS_Start;
if hMP3<>0 then
if BASS_ChannelPlay(hMP3,True) then begin
CurrentMP3:=CurrentMP3+1;
if CurrentMP3>MP3List.Count-1 then CurrentMP3:=0;
end;
end;
end;

function InitializeSetup:boolean;
begin
ExtractTemporaryFile('Play.mp3');
MP3List:=TStringList.Create;
MP3List.Add(ExpandConstant('{tmp}')+'\Play.mp3');
CurrentMP3:=0;
Result:=True;
end;

procedure InitializeWizard;
begin
TimerID:=SetTimer(0,0,500,WrapTimerProc(@TimerTick,5));
BASS_Init(-1,44100,0,0,0);
BASS_SetConfig(5,100);
BASS_SetConfig(6,100);
end;

procedure DeinitializeSetup;
begin
KillTimer(0,TimerID);
BASS_Stop;
BASS_Free;
MP3List.Free;
end;
как к нему прикрутить кнопку?

Нашёл только это

[ Code]
var
PageNameLabel, PageDescriptionLabel: TLabel;
PageID,ResultCode: Integer;

procedure InitializeWizard();
begin

ExtractTemporaryFile('bass.dll');
ExtractTemporaryFile('innocallback.dll');
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('mb.bmp');
ExtractTemporaryFile('music.mp3');

BASS_Init(ExpandConstant('{tmp}\music.mp3'))
BASS_CreateOnOffButton(ExpandConstant('{tmp}\mb.bmp'), 20, 320, 36, 36, 4)
end; но он работает с ошибками

nik1967
11-09-2011, 11:12
Devils Night, 3 различных примера (http://rghost.ru/21168401)

VASYAKRN
11-09-2011, 14:17
текстурирувал кнопки и вибивает ошибки помогите пожалста
Ссылка (http://inno.at.ua/Assassins_Creed_Revelations.7z)

insombia
11-09-2011, 14:21
VASYAKRN какие ошибки?

VASYAKRN
11-09-2011, 15:28
VASYAKRN какие ошибки? »

При тектурирувоние через ботву появляетса фон

insombia
11-09-2011, 15:53
VASYAKRN скрипт нужно полностью переделывать

VASYAKRN
11-09-2011, 16:05
VASYAKRN скрипт нужно полностью переделывать »


уточни
если хочеш могу дать скрипт без текстур

insombia
11-09-2011, 16:44
VASYAKRN придется писать новый скрипт для того чтобы картинки были не в bmp a в png

VASYAKRN
11-09-2011, 16:49
VASYAKRN придется писать новый скрипт для того чтобы картинки были не в bmp a в png »
там есть текстурирувание через bmp i botva
оба с глюками.
Может с какимось получитса сделать

insombia
11-09-2011, 16:52
VASYAKRN ХЗ




© OSzone.net 2001-2012