PDA

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


Страниц : 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

Serega
21-03-2014, 20:32
но для функций, которые просто возвращают true/false без всякого ResultCode »

if not FileCopy(...) then
MsgBox(SysErrorMessage(GetLastError), mbInformation, MB_OK);

GetLastError, прочитать о ней можно здесь http://msdn.microsoft.com/en-us/library/windows/desktop/ms679360(v=vs.85).aspx
В инно, объявляется в скрипте так:
function GetLastError: DWORD; external 'GetLastError@kernel32.dll stdcall';

Ivan_009
21-03-2014, 22:10
При использовании скина как сделать,чтобы при выходе инсталл плавно закрывался без дополнительной формы аеро ( на Win7)...

Dodakaedr
22-03-2014, 00:31
как сделать чтобы ярлыки создавались либо для всех пользователей, либо для текущего?

Dodakaedr
23-03-2014, 20:13
Взял пример из справки программы:

[Files]
Source: "{src}\*.exe"; DestDir: {app}; BeforeInstall: ChangeCaption('Откиньтесь на спинку кресла и наслаждайтесь!')
Source: "{src}\*.dll"; DestDir: {app}; BeforeInstall: ChangeCaption('Не забудьте зарегистрироваться')

[Cоde]
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str;
end;
В итоге у меня получилось
[Files]
Source: "regcode.ini"; DestDir: "{pf}\r"; BeforeInstall: "CreateBackup ChangeCaption('Регистрация программы')"; Flags: ignoreversion
Source: "Settings.ini"; DestDir: "{pf}\r"; BeforeInstall: "CreateBackup ChangeCaption('Установка настроек')"; Flags: ignoreversion

[Cоde]
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str;
end;
но при компиляции выдаетhttp://savepic.org/5200355.jpg
Как это исправить?

И еще такой вопрос: как создать checkbox c текстом "Зарегистрировать" на странице выбора папки (SelectDirPage) чтобы если отмечен, то при установки устанавливался файл regcode.ini если не отмечен то не устанавливался?

Ivan_009
23-03-2014, 20:32
Покажите пожалуйста пример слайд шоу через ботву.

TryRooM
23-03-2014, 21:07
Dodakaedr,
checkbox c текстом
http://rghost.ru/53291369

Habetdin
23-03-2014, 21:40
Как это исправить? »
Можно вызывать CreateBackup внутри функции ChangeCaption. Кстати, в полном коде («В итоге у меня получилось») не видно реализации функции CreateBackup.
Либо сделать отдельную функцию, которая вызовет и CreateBackup, и ChangeCaption.

Dodakaedr
23-03-2014, 22:26
Либо сделать отдельную функцию, которая вызовет и CreateBackup, и ChangeCaption. »
можете это в коде показать?
Реализация функции CreateBackup procedure CreateBackup;
var
srcFile, destFile: string;
begin
srcFile:= ExpandConstant(CurrentFileName);
destFile:= srcFile + '.bak';
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end;

procedure RestoreBackup(backupDir: string);
var
srcFile, destFile: string;
FSR, DSR: TFindRec;
FindResult: Boolean;
APath: string;
begin
APath := AddBackslash(backupDir);
FindResult := FindFirst(APath + '*.bak', FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
srcFile:= APath + FSR.Name;
destFile:= Copy(srcFile, 0, Length(srcFile)-4);
DeleteFile(destFile);
RenameFile(srcFile, destFile);
end;
FindResult := FindNext(FSR);
end;
FindResult := FindFirst(APath + '*.*', DSR);
while FindResult do
begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and
not ((DSR.Name = '.') or (DSR.Name = '..')) then
{Recursion} RestoreBackup(APath + DSR.Name);
FindResult := FindNext(DSR);
end;
finally
FindClose(FSR);
FindClose(DSR);
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
RestoreBackup(ExpandConstant('{app}'))
end;
end;

Habetdin
24-03-2014, 00:10
Dodakaedr, ок, просто хотел уточнить параметры CreateBackup. Раз их нет, то и будем вызывать без них :) Как я писал выше, самый легкий способ - сделать так:
procedure ChangeCaption(str: string);
begin
CreateBackup();
WizardForm.StatusLabel.Caption:= str;
end;

И убрать CreateBackup из BeforeInstall.
P.S.: ChangeCaption в [Code] должен быть объявлен позже, чем CreateBackup.

В смысле нет »
Реализация != параметр, у CreateBackup нет входных параметров.

Dodakaedr
24-03-2014, 07:55
хотел уточнить параметры CreateBackup. Раз их нет »
Спасибо! Заработал.

habib2302
24-03-2014, 15:58
доброе время суток. я делаю репак winrar и как вы знаете что у него есть ранее созданный деинсталлятор. я не знаю как вам объяснить, но попробую. Как сделать так, чтобы вместо деинсталлятора который создает inno использовался деинсталлятор от winrar?

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR_is1]
"UninstallString"="\"C:\\Program Files\\WinRAR\\Uninstall.exe\""
"UninstallDataFile"="C:\\Program Files\\WinRAR\\Uninstall.lst"
"QuietUninstallString"="\"C:\\Program Files\\WinRAR\\Uninstall.exe\" /s"

Ivan_009
24-03-2014, 18:11
Как сделать слайд шоу через ботву не по процентам а с интервалом времени...

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

ChVL
24-03-2014, 18:12
Необходимо добавить свою папку в папку {sys}\DriverStore\FileRepository.
Система не пускает: выдаёт ошибку 5 - отказано в доступе.
В секции [Setup] строка PrivilegesRequired=admin имеется, в строке Source есть Flags: restartreplace.

Как решить эту проблему?
_______________________________________________

habib2302
А в лоб? Не? - Не делать деинсталлятор Inno, а скопировать в папку оригинальные Uninstall.exe и Uninstall.lst. При этом можно внести необходимые изменения в Uninstall.lst.
В своих репаках давно так делаю.

Ivan_009
24-03-2014, 19:26
Как настроить показ слайдов попорядку а не вслучайном порядке.
И настроить распаковку слайдов в Temp а не рядом с инсталлом вот скрипт...

http://rghost.ru/53315612

Благодарю за помощь...

Ivan_009
26-03-2014, 12:59
Как тут прописать чтобы из папки Temp брались изображения...

InitSlideshow(ExpandConstant('{src}\Database'),'.jpg',3000,0,0,798,543);

nik1967
26-03-2014, 13:21
Как тут прописать чтобы из папки Temp брались изображения... »
А если немного подумать и почитать справку? В данном случае - Константы
{src}
Папка, в которой находится инсталлятор.
{tmp}
Временная папка. Это не значение переменной среды TEMP пользователя. Это папка, где создаются временные файлы инсталлятора ("C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и папки удаляются из папки Temp после завершения установки приложения.

Ivan_009
26-03-2014, 13:55
nik1967, Спасибо большое :up . Глянь пожалуйста скрипт почему то слайд-шоу не работает наверное таймера не хватает даже не знаю...

http://rghost.ru/53363940

nik1967
26-03-2014, 15:33
Ivan_009, http://rghost.ru/53366454

А это без доп. библиотек, но на .bmp - голимый дефулт (SlideShow) (http://4rqv.qr.ai/) (рекомендую использовать UNICODE версию InnoSetup)

Ivan_009
26-03-2014, 17:24
nik1967, Спасибо большое при большое :) :up ...

Извините за :offtopic: nik1967, Кстати ты не в курсе, что на krinkels работы какие то ведутся не возможно зайти на сайт уже третий день...

nik1967
26-03-2014, 17:41
Ivan_009, [25.03.2014 13:29:43] nik1967: С сайтом какие то неполадки?
[25.03.2014 13:30:16] YURSHAT: Не, обновление движка и структуры форумаТак же сорри за оффтоп.




© OSzone.net 2001-2012