Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
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
Здравствуйте.
Хочу представить вам свою наработку:
[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:
Спасибо, все работает.
Здравствуйте, помогите решить задачу, нужно заменить при установке в уже имеющемся файле .xml рандомное значение между двумя строками (Ник)
<Nick type="string">ТутЛюбойНик</Nick>. Как это можно реализовать. Спасибо.
andrejshapal
10-09-2011, 19:28
Помогите плиз прикрутить распаковку arc к скрипту...
http://rghost.ru/21107801
Пробовал брать скрипт на сайте freearc, использовать IssDone, но везде большие скрипты, и на определённых местах выдаёт ошибки. Замахался с ними. Возможно есть простой скрипт?
[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; но он работает с ошибками
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.