Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
но для функций, которые просто возвращают 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
Покажите пожалуйста пример слайд шоу через ботву.
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
Как сделать слайд шоу через ботву не по процентам а с интервалом времени...
Заранее спасибо...
Необходимо добавить свою папку в папку {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);
Как тут прописать чтобы из папки Temp брались изображения... »
А если немного подумать и почитать справку? В данном случае - Константы
{src}
Папка, в которой находится инсталлятор.
{tmp}
Временная папка. Это не значение переменной среды TEMP пользователя. Это папка, где создаются временные файлы инсталлятора ("C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и папки удаляются из папки Temp после завершения установки приложения.
Ivan_009
26-03-2014, 13:55
nik1967, Спасибо большое :up . Глянь пожалуйста скрипт почему то слайд-шоу не работает наверное таймера не хватает даже не знаю...
http://rghost.ru/53363940
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 работы какие то ведутся не возможно зайти на сайт уже третий день...
Ivan_009, [25.03.2014 13:29:43] nik1967: С сайтом какие то неполадки?
[25.03.2014 13:30:16] YURSHAT: Не, обновление движка и структуры форумаТак же сорри за оффтоп.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC