habib2302,
Внимание! Данная тема предназначена только для обсуждения написания скриптов ! »
-----------------------------------------------------
Эффект "растворения" в слайдшоу еще можно как-то прописать ? »
Эффекты настраиваются в процедуре ShowImage
ShowImage(piclist.strings[CurrentPicture - 1], 1);
Последняя циферка, выделенная жирным, в строке номер эффекта перехода.
Список возможных значений:
1 - Случайный эффект.
2 - Alpha Blend.
3 - Blocks.
4 - Circle.
5 - Diagonal.
6 - Fuse.
7 - InterLaced.
8 - Page.
9 - Radial.
10 - Roll.
11 - Waterfall.
12 - Wipe.
Меняйте номера эффектов в процедуре и выбирайте, какой вам понравится.
а то у меня не русифицирует,но переписывает файлы куда надо »
Ну, если все нужные файлы переписываются, а эффекта все равно ноль смотрите в сторону игры или русика. Вполне вероятно, что простой замены файлов недостаточно. Большинство игры хранят настройки языка в реестре или конфигурационных файлах. В скрипте, вроде, ошибок нет.
Johny777
06-07-2013, 16:09
Crazy Noise, saurn,
Меняйте номера эффектов в процедуре и выбирайте, какой вам понравится. »
можно ещё и рандомом ShowImage(piclist.strings[CurrentPicture - 1], Random(12)+1);
Кстати вот имплементация из делфи функции RandG() на основе нормального распределения по Гауссу
http://img266.imageshack.us/img266/2954/m3ln.jpg (http://imageshack.us/photo/my-images/266/m3ln.jpg/)
Работает она медленнее (особенно в инно), но разброс в диапазоне намного "случайнее". Кому надо забирайте! :)
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
InfoBeforeFile=compiler:license.txt
DisableWelcomePage=yes
[Code ]
function Rand(): Extended;
begin
Result := Random(MAXINT)/MAXINT;
end;
function Sqr(const E: Extended): Extended;
begin
Result := E*E;
end;
procedure Inc(var Int: Integer);
begin
Int := Int+1;
end;
function Ln(const X: Extended): Extended;
var
tek, rez, b: Extended;
i : Longint;
begin
rez := 0;
b := X-1;
i := 1;
tek := b;
while ABS(tek) >= 0.00000001 do
begin
rez := rez + tek;
Inc(i);
b := -b*(x-1);
tek := b/i;
end;
Result := rez;
end;
//Функция генерирует случайное число с отклонением по Гауссу от среднего значения Mean. Наибольшая часть возвращаемых значений будет лежать в диапазоне Mean-StdDev ... Mean+StdDev.
function RandG(const Mean, StdDev: Extended): Extended;
{ Marsaglia-Bray algorithm }
var
U1, S2: Extended;
begin
repeat
U1 := 2*Rand() - 1;
S2 := Sqr(U1) + Sqr(2*Rand()-1);
until S2 < 1;
Result := Sqrt(-2*Ln(S2)/S2) * U1 * StdDev + Mean;
end;
function RandEx(const Range: Extended): Extended; //X := RandG(100,10); { 90<=X<=110 }
begin
Result := Abs(RandG(Range/2, Range/2));
if Result > Range then
repeat
Result := Result-1;
until Result <= Range;
end;
procedure InitializeWizard();
var
i: Integer;
begin
WizardForm.InfoBeforeMemo.Clear;
WizardForm.InfoBeforeMemo.Text := 'RandEx' + #9#9#9 + 'Random';
Randomize();
for i := 0 to 20 do WizardForm.InfoBeforeMemo.Text := WizardForm.InfoBeforeMemo.Text + #13#10 + IntToStr(Round(RandEx(12))) + #9#9#9 + IntToStr(Random(12)+1);
end;
habib2302
07-07-2013, 22:39
Windows 7 не так. »в каком смысле не так?у меня просто тоже самое,но винда недавно установленнаяя!!
доброе время суток.Я решил вернутся к моему сообщению по поводу appid с фигурными скобками {}
RegQueryStringValue(HKLM, Format('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%s_is1', [AppIds[i]]), 'UninstallString', Buff);
Buff := RemoveQuotes(Buff);
появились еще проблемы.
после удаления моего репака выдает ошибку
http://img203.imageshack.us/img203/1652/thumbmhv.png (http://img221.imageshack.us/img221/4152/snagit00021306201312071.png)
»сейчас делаю репак image comparer.оригинальный экзешник был создан через инно.т.е нету гемороя с _is1 на конце appid.но я хочу решить эту проблему
http://img203.imageshack.us/img203/1652/thumbmhv.png (http://img221.imageshack.us/img221/4152/snagit00021306201312071.png)
insombia
08-07-2013, 10:38
не нашел тему для пережатия файлов и т д по этому пишу здесь,кому нужно вышла новая версия SrepInside v0.3.1 (http://rghost.ru/47268716)
поддержка распаковки архивов последней версии srep v3.91;
убрал проверку контрольной суммы, т.к. фриарк при распаковке сам ее проверяет.
habib2302 может там 2 файла для удаления? потому что если твоим скриптом все удаляет
habib2302, держите
[Code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
RT_RCDATA = 10;
APPID_IMAGE_COMPARER = '%7B{D37E8E49-1AA3-401F-BA15-50AB88A2712D}';
WAIT_OBJECT_0 = $0;
STARTF_USESHOWWINDOW = 1;
NORMAL_PRIORITY_CLASS = $00000020;
INFINITE = $FFFFFFFF;
type
_STARTUPINFO = record
cb: DWORD;
#ifdef UNICODE
lpReserved, lpDesktop, lpTitle: PAnsiChar;
#else
lpReserved, lpDesktop, lpTitle: PChar;
#endif
dwX, dwY, dwXSize, dwYSize, dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags: DWORD;
wShowWindow, cbReserved2: Word;
lpReserved2: Byte;
hStdInput, hStdOutput, hStdError: THandle;
end;
_PROCESS_INFORMATION = record
hProcess: THandle;
hThread: THandle;
dwProcessId: DWORD;
dwThreadId: DWORD;
end;
function SetWindowTheme(hwnd: HWND; pszSubAppName: pchar; pszSubIdList: pchar): Longint; external 'SetWindowTheme@uxtheme.dll stdcall delayload';
function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';
function WaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; external 'WaitForSingleObject@kernel32.dll stdcall';
#ifdef UNICODE
function CreateProcess(lpApplicationName, lpCommandLine: PAnsiChar; lpProcessAttributes, lpThreadAttributes: Longint; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment, lpCurrentDirectory: PAnsiChar; const lpStartupInfo: _STARTUPINFO; var lpProcessInformation: _PROCESS_INFORMATION): BOOL; external 'CreateProcess{#A}@kernel32.dll stdcall';
#else
function CreateProcess(lpApplicationName, lpCommandLine: PChar; lpProcessAttributes, lpThreadAttributes: Longint; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment, lpCurrentDirectory: PChar; const lpStartupInfo: _STARTUPINFO; var lpProcessInformation: _PROCESS_INFORMATION): BOOL; external 'CreateProcess{#A}@kernel32.dll stdcall';
#endif
var
TDV: TFolderTreeView;
TFV: TStartMenuFolderTreeView;
ResultCode: Integer;
lPLogo, bPicHandle, bPicHandle2, lPicHandle: THandle;
BtnImage: TBitmapImage;
CheckLicense: TCheckBox;
iInitialize: Boolean;
TB: TTrackBar;
function GetUninstallPath(const AppIds: array of String): array of String;
var
StringList: TStringList;
i, Len: Integer;
Buff: String;
begin
for i := 0 to GetArrayLength(AppIds)-1 do
begin
Buff := RemoveQuotes(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppIds[i] + '_is1,UninstallString|}'));
if Buff <> '' then
begin
Len := GetArrayLength(Result);
SetArrayLength(Result, Len+1);
Result[Len] := Buff;
end;
end;
end;
procedure UninstallApps(const UninstallPathes: array of String);
var
pi: _PROCESS_INFORMATION;
si: _STARTUPINFO;
i: Integer;
begin
for i := 0 to GetArrayLength(UninstallPathes)-1 do
begin
si.cb := SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_SHOWNORMAL;
#ifdef UNICODE
if not CreateProcess('', PAnsiChar(UninstallPathes[i]), 0, 0, False, NORMAL_PRIORITY_CLASS, '', '', si, pi) then
#else
if not CreateProcess('', PChar(UninstallPathes[i]), 0, 0, False, NORMAL_PRIORITY_CLASS, '', '', si, pi) then
#endif
begin
MsgBox(SysErrorMessage(DLLGetLastError), mbCriticalError, MB_OK);
Exit;
end;
try
while WaitForSingleObject(pi.hProcess, INFINITE) <> WAIT_OBJECT_0 do Application.ProcessMessages;
finally
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;
end;
end;
function GetFromRes(const ResName, SaveFileName: String): Boolean;
var
lResStream: TResourceStream;
begin
lResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
lResStream.SaveToFile(AddBackslash(ExpandConstant('{tmp}')) + SaveFileName);
finally
lResStream.Free;
Result := FileExists(AddBackslash(ExpandConstant('{tmp}')) + SaveFileName);
end;
end;
//////////////////////////////////кликабельный лейбл
procedure BevelLabelClick(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://forum.oszone.net/member.php?u=334581','', '', SW_SHOW, ewNoWait, ErrorCode)
end;
///////////////////////////////////////
function InitializeSetup(): Boolean;
var
i, Len: Integer;
uArray: array of String;
begin
uArray := GetUninstallPath( ['{#SetupSetting("AppID")}', APPID_IMAGE_COMPARER] );
Len := GetArrayLength(uArray);
Result := Len = 0;
if not Result then if MsgBox(CustomMessage('MsgUnins'), mbError, MB_YESNO) = IDYES then
begin
UninstallApps(uArray);
Result := InitializeSetup();
end;
end;
procedure LogoLabelOnClick(Sender: TObject);
begin
ShellExec('open', 'http://www.imagecomparer.com/', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode)
end;
procedure LicenseOnClick(Sender: TObject);
begin
case TCheckBox(Sender).Checked of
True: WizardForm.LicenseAcceptedRadio.Checked := True;
False: WizardForm.LicenseNotAcceptedRadio.Checked := True;
end;
end;
procedure TDVOnChange(Sender: TObject);
begin
WizardForm.DirEdit.Text:= AddBackslash(TDV.Directory)+'{#MyAppName}'
end;
procedure TFVOnChange(Sender: TObject);
begin
WizardForm.GroupEdit.Text:= AddBackslash(TFV.Directory)+'{#MyAppName}'
end;
function OnShouldSkipPage(Sender: TWizardPage): Boolean;
begin
if WizardForm.ComponentsList.Items.Count > 0 then WizardForm.Tag:= 1; // отображаются страницы выбора папки и компонентов
end;
procedure TBOnChange(Sender: TObject);
begin
SetTaskBarProgressValue(0, TTrackBar(sender).Position);
end;
procedure InitializeWizard;
begin
WizardForm.LicenseNotAcceptedRadio.Hide;
WizardForm.LicenseAcceptedRadio.Hide;
WizardForm.LicenseMemo.Height := ScaleY(175);
CheckLicense:= TCheckBox.Create(WizardForm);
CheckLicense.Left:= ScaleX(0);
CheckLicense.Top:= ScaleY(216);
CheckLicense.Caption:= WizardForm.LicenseAcceptedRadio.Caption;
CheckLicense.Width:= ScaleX(417);
CheckLicense.OnClick:= @LicenseOnClick;
CheckLicense.Parent:= WizardForm.LicensePage;
with WizardForm do
begin
iInitialize := True;
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_B2P', 'b2p.dll') and GetFromRes('_IS_LOGO', 'logo.png') and GetFromRes('_IS_BPIC', 'bPic.png') and GetFromRes('_IS_LIPIC', 'LiPic.png') and GetFromRes('_IS_APIC', 'aPic.png') then
begin
bPicHandle := ImgLoad(WelcomePage.Handle, ExpandConstant('{tmp}\aPic.png'), WizardBitmapImage.Left, WizardBitmapImage.Top, WizardBitmapImage.Width, WizardBitmapImage.Height, True, True);
WizardBitmapImage.Hide;
ImgSetVisibility(bPicHandle, True);
ImgApplyChanges(WelcomePage.Handle);
bPicHandle := ImgLoad(FinishedPage.Handle, ExpandConstant('{tmp}\bPic.png'), WizardBitmapImage2.Left, WizardBitmapImage2.Top, WizardBitmapImage2.Width, WizardBitmapImage2.Height, True, True);
WizardBitmapImage2.Hide;
ImgSetVisibility(bPicHandle, True);
ImgApplyChanges(FinishedPage.Handle);
lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
WizardSmallBitmapImage.Hide;
ImgSetVisibility(lPicHandle, True);
ImgApplyChanges(MainPanel.Handle);
lPLogo:= ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(20), ScaleY(320), ScaleX(135), ScaleY(38), True, True);
ImgApplyChanges(WizardForm.Handle);
end;
ExtractTemporaryFile('WinTB.dll');
TaskBarV10(MainForm.Handle, WizardForm.Handle, false, false, 0, 0, _m_);
TB:=TTrackBar.Create(Wizardform)
TDV:= TFolderTreeView.Create(WizardForm);
TDV.Top:= WizardForm.DirEdit.Top+28;
TDV.Width:= 417;
TDV.Height:= 100;
TDV.OnChange:= @TDVOnChange;
TDV.Parent:= WizardForm.SelectDirPage;
TFV:= TStartMenuFolderTreeView.Create(nil);
TFV.Top:= WizardForm.GroupEdit.Top+28;
TFV.Width:= 417;
TFV.Height:= 100;
TFV.SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{us erstartup}'),ExpandConstant('{commonstartup}'));
TFV.OnChange:= @TFVOnChange;
TFV.Parent:= WizardForm.SelectProgramGroupPage;
with TLabel.Create(WizardForm) do
begin
Parent:=WizardForm;
AutoSize:=False;
Transparent:= true;
SetBounds(ScaleX(20), ScaleY(320), ScaleX(135), ScaleY(38));
OnClick:=@LogoLabelOnClick;
Cursor:= CrHand;
/////////////////////////////////////кликабельный лейбл
with BeveledLabel do
begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
end;
end;
end;
///////////////////////////////////////
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
Case CurPageID of
wpSelectTasks:
begin
WizardForm.NextButton.Caption:= SetupMessage(msgButtonInstall);
end;
end;
end;
procedure DeinitializeSetup();
begin
if iInitialize then
begin
gdipShutdown;
TaskBarDestroy;
end;
end;
procedure UnLogoLabelOnClick(Sender: TObject);
begin
ShellExec('open', 'http://www.imagecomparer.com/', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode)
end;
procedure InitializeUninstallProgressForm;
begin
with UninstallProgressForm do
begin
if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_B2P', 'b2p.dll') and GetFromRes('_IS_LOGO', 'logo.png') and GetFromRes('_IS_LIPIC', 'LIPic.png') then
begin
lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
WizardSmallBitmapImage.Hide;
ImgSetVisibility(lPicHandle, True);
ImgApplyChanges(MainPanel.Handle);
lPLogo:= ImgLoad(UninstallProgressForm.Handle, ExpandConstant('{tmp}\logo.png'), ScaleX(20), ScaleY(320), ScaleX(135), ScaleY(38), True, True);
ImgApplyChanges(UninstallProgressForm.Handle);
end;
with TLabel.Create(nil) do
begin
Parent:=UninstallProgressForm;
AutoSize:=False;
Transparent:= true;
SetBounds(ScaleX(20), ScaleY(320), ScaleX(135), ScaleY(38));
OnClick:=@UnLogoLabelOnClick;
Cursor:= CrHand;
/////////////////////////////////////кликабельный лейбл
with BeveledLabel do
begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
end;
end;
end;
///////////////////////////////////////
end;
procedure DeinitializeUninstall();
begin
gdipShutdown;
end;
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC