Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
saneksanek
05-07-2014, 23:50
YURSHAT, Не знал как яснее выразить данную проблему,но второй вариант мне подошел спс.
Dinvin4ester
06-07-2014, 00:25
Ребята,это опять я. Мне Dodakaedr, помог за что ему и спасибо,но есть одно но,перевел все на англ,но в некоторых частях все-равно проскакивает русский текст http://i61.fastpic.ru/big/2014/0706/b3/372c7d16224db8401b42463a10d1e1b3.jpg и http://i63.fastpic.ru/big/2014/0706/a6/59e0668289328cf2f3d6b5c0dd028ea6.jpg
Скрипт - http://multi-up.com/984517 .
Dodakaedr
06-07-2014, 00:40
все-равно проскакивает русский текст »
По внимательней переведите текст и пропишите его в procedure ChangeLang();procedure ChangeLang();
begin
IconLabel.Caption := CustomMessage(lang+'Icon');
end;
http://savepic.net/5947548m.jpg (http://savepic.net/5947548.htm)
Dinvin4ester
06-07-2014, 00:46
Dodakaedr,
Да вроде перевел нормально и добавил,но как было так и осталось,что я делаю не так ?
Dodakaedr
06-07-2014, 01:02
Вы в процедуру procedure ChangeLang(); что-то пишите?
Dinvin4ester
06-07-2014, 01:06
Dodakaedr,
Ага,SelectGroupLabel.Caption := CustomMessage(lang+'SelectGroup'); ну и т.д.
___________
Вроде все получилось и показывает,но вот на этом выдает ошибку http://i64.fastpic.ru/big/2014/0706/13/018a5db90e01e130e9a251249d5d0513.png
И еще заметил где присутсвуют цифры ,например SelectGroupLabel1,то выдает ошибку,что не так ума не приложу.
Dodakaedr
06-07-2014, 02:20
Dinvin4ester, то что вы прописали у вас не используется. Возможно вы хотели вот это прописатьInstallSpacelabel1.Caption := CustomMessage(lang+'Install1');
Dinvin4ester
06-07-2014, 11:43
Dodakaedr,
ок,попробуем.
Kashtan007
06-07-2014, 12:39
Всем доброго времени суток, в данный момент в установщике "Удаление старых компонентов" и "Бекап компонентов" реализовано вот так: Скачать скрипт (http://rghost.ru/private/56752214/d76895e470741492826d8340605175af).
Но есть одна проблема, функция удаление старых компонентов работает не корректно. Получается, что когда выбираешь этот чекбокс, то он удаляет компоненты уже после их установки. Т.е. если, что-то устанавливаешь и выбираешь это чекбокс, то в итоге ничего не установится так как он удалят компоненты уже после установки. В идеала сначада должно удалить старые компоненты, а потом установить модификации. А в данный момент получается, что с начала идет установка а потом удаление и в итоге получается как-будто ничего не устанавливал.
Спасибо, что помогаете) Заранее огромное спасибо!
Dodakaedr
06-07-2014, 12:43
Kashtan007, если я правильно понял то вам нужна секция [InstallDelete].
Пример:[InstallDelete]
Type: filesandordirs; Name: "{app}"
Kashtan007
06-07-2014, 13:04
Dodakaedr, походу, что да) Эта секция только для удаления компонентов? А, что делать с бекапом? Как мне это совместить?
Dodakaedr
06-07-2014, 14:04
Эта секция только для удаления компонентов? »
Для файлов и папок.
А, что делать с бекапом? Как мне это совместить? »
С этим я не могу помочь, у меня что-то не получается.
saneksanek
06-07-2014, 18:27
Kashtan007, Пример,дальше сам играйся https://yadi.sk/d/CP9bnROEW3iYq
Dodakaedr
07-07-2014, 15:33
А, что делать с бекапом? Как мне это совместить? »
С этим я не могу помочь, у меня что-то не получается. »
Получилось вот такое соченить. Тестируйте, вроде работает. Спасибо Sergey3695 за помощь[Setup]
//WizardImageFile=Images\Дизайн установщика\Приветствие.bmp
AppName=ModPackFull
AppVersion=0.9.1
//SetupIconFile=Images\Дизайн установщика\back.ico
DefaultDirName=ModPackFull
AppendDefaultDirName=no
DirExistsWarning=no
[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
[InstallDelete]
Type: filesandordirs; Name: {app}\old_res_mods; Check: del
[ Code]
//--------// Бекап и удаление старых модов [Начало] //--------//
var
ModCheck, BackupCheck: TNewCheckBox;
//--------// Бекап и удаление старых модов [Конец] //--------//
function MoveFile(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
function Del:Boolean;
begin
Result:=ModCheck.Checked;
end;
procedure InitializeWizard();
//--------// Бекап и удаление старых модов [Начало] //--------//
begin
ModCheck:= TNewCheckBox.Create(PageFromID(wpSelectDir));
ModCheck.Width := PageFromID(wpSelectDir).SurfaceWidth;
ModCheck.Parent := PageFromID(wpSelectDir).Surface;
ModCheck.Caption:='Удалить все старые моды';
ModCheck.left:=wizardForm.DirEdit.left;
ModCheck.Top:=wizardForm.DirEdit.top + ScaleY(30);
BackupCheck:= TNewCheckBox.Create(PageFromID(wpSelectDir));
BackupCheck.Width := PageFromID(wpSelectDir).SurfaceWidth;
BackupCheck.Parent := PageFromID(wpSelectDir).Surface;
BackupCheck.Caption:='Сохранить резервную копию старых модов';
BackupCheck.left:=wizardForm.DirEdit.left;
BackupCheck.Top:=ModCheck.top + ScaleY(30);
end;
//--------// Бекап и удаление старых модов [Конец] //--------//
//--------// Бекап и удаление старых модов [Начало] //--------//
procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if CurStep=ssInstall then begin
if BackupCheck.Checked then begin
MyFiles:=['*.exe','*.package','*.precomp','*.jpg','*.txt','*.psd']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками
MyDir:=ExpandConstant('{app}'+'\res_mods\'); //папка откуда бакупить
BackDir:=ExpandConstant('{app}'+'\old_res_mods\'); // папка куда бакупить
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+ FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
FindFiles: TFindRec;
MyDir, BackDir: string;
begin
if CurUninstallStep = usPostUninstall then begin
MyDir:=ExpandConstant('{app}'+'\res_mods\'); //папка куда возвращать файлы
BackDir:=ExpandConstant('{app}'+'\old_res_mods\'); // папка откуда брать файлы
if DirExists(BackDir) then begin
if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin
if FindFirst(BackDir+'*', FindFiles) then begin
repeat
MoveFile(BackDir+ FindFiles.Name, MyDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(BackDir);
end;
end;
end;
end;
end;
//--------// Бекап и удаление старых модов [Конец] //--------//
Kashtan007
07-07-2014, 15:51
Dodakaedr, спасибо огромное за помощь) Передай Sergey3695 тоже спасибо)
P.S. Пойду тестировать)
Kashtan007
07-07-2014, 16:30
Dodakaedr, к сожалению не работает(
Пробовал много раз, нету ни удаления, ни бекапа(
Dodakaedr
07-07-2014, 17:00
к сожалению не работает(
Пробовал много раз, нету ни удаления, ни бекапа( »
Я у себя проверил. Работает и удаление и бекап. Что-то вы напутали у себя. Скиньте в личку ваш оригинальный скрипт с которым вы работаете.....посмотрим что не так. Попробуйте еще этот пример:[Setup]
//WizardImageFile=Images\Дизайн установщика\Приветствие.bmp
AppName=ModPackFull
AppVersion=0.9.1
//SetupIconFile=Images\Дизайн установщика\back.ico
DefaultDirName=ModPackFull
AppendDefaultDirName=no
DirExistsWarning=no
[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
[ Code]
//--------// Бекап и удаление старых модов [Начало] //--------//
var
ModCheck, BackupCheck: TNewCheckBox;
//--------// Бекап и удаление старых модов [Конец] //--------//
function MoveFile(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
procedure InitializeWizard();
//--------// Бекап и удаление старых модов [Начало] //--------//
begin
ModCheck:= TNewCheckBox.Create(PageFromID(wpSelectDir));
ModCheck.Width := PageFromID(wpSelectDir).SurfaceWidth;
ModCheck.Parent := PageFromID(wpSelectDir).Surface;
ModCheck.Caption:='Удалить все старые моды';
ModCheck.left:=wizardForm.DirEdit.left;
ModCheck.Top:=wizardForm.DirEdit.top + ScaleY(30);
BackupCheck:= TNewCheckBox.Create(PageFromID(wpSelectDir));
BackupCheck.Width := PageFromID(wpSelectDir).SurfaceWidth;
BackupCheck.Parent := PageFromID(wpSelectDir).Surface;
BackupCheck.Caption:='Сохранить резервную копию старых модов';
BackupCheck.left:=wizardForm.DirEdit.left;
BackupCheck.Top:=ModCheck.top + ScaleY(30);
end;
//--------// Бекап и удаление старых модов [Конец] //--------//
//--------// Бекап и удаление старых модов [Начало] //--------//
procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if CurStep=ssInstall then begin
if ModCheck.Checked then
begin
DelTree(ExpandConstant('{app}\old_res_mods'), True, True, True);
end;
if BackupCheck.Checked then begin
MyFiles:=['*.exe','*.package','*.precomp','*.jpg','*.txt','*.psd']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками
MyDir:=ExpandConstant('{app}'+'\res_mods\'); //папка откуда бакупить
BackDir:=ExpandConstant('{app}'+'\old_res_mods\'); // папка куда бакупить
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+ FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
FindFiles: TFindRec;
MyDir, BackDir: string;
begin
if CurUninstallStep = usPostUninstall then begin
MyDir:=ExpandConstant('{app}'+'\res_mods\'); //папка куда возвращать файлы
BackDir:=ExpandConstant('{app}'+'\old_res_mods\'); // папка откуда брать файлы
if DirExists(BackDir) then begin
if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin
if FindFirst(BackDir+'*', FindFiles) then begin
repeat
MoveFile(BackDir+ FindFiles.Name, MyDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(BackDir);
end;
end;
end;
end;
end;
//--------// Бекап и удаление старых модов [Конец] //--------//
P.S. Если вы копипастом вставляли, то надо в строчке [ Code] удалить пробел. Вы это сделали?
saneksanek
08-07-2014, 10:11
Ребят,может кто-то подсказать можно как-то решить чтобы антивирус не блокировал dll?
Можно как-то добавить сертификат подпись и вообще возможно-ли его создать и прикрутить
P.S. Если вы копипастом вставляли, то надо в строчке [ Code] удалить пробел. Вы это сделали? »Dodakaedr, Чтоб не было подобного у пользователя: вариант (http://forum.oszone.net/post-2270836-1700.html).
В Inno Setup Compiler задумано ещё проще.
Знакомьтесь с настройками Inno Setup Compiler повнимательней:
Откройте Inno Setup Compiler
Инструменты » Настройки редактора
Перейдите во вкладку Копирование текста
Найдите: При копировании текста как UBB код, переключите на Использовать тег и нажмите ОК
На этом всё.
А дальше, копируете код который хотите вставить:
Выделяете содержимое; Жмёте правую кнопку мыши и выбираете Копировать как UBB код.
И всё, вам при вставке, даже не придётся здесь нажимать http://forum.oszone.net/images/editor/code.gif т.к при копировании код будет со всеми необходимыми тегами:
[code][Code]
Можно как-то добавить сертификат подпись и вообще возможно-ли его создать и прикрутить »SignTool (http://msdn.microsoft.com/ru-ru/library/8s9b9yaz(v=vs.110).aspx)
Dodakaedr
08-07-2014, 19:24
В Inno Setup Compiler задумано ещё проще.
Знакомьтесь с настройками Inno Setup Compiler повнимательней:
Откройте Inno Setup Compiler
Инструменты » Настройки редактора
Перейдите во вкладку Копирование текста
Найдите: При копировании текста как UBB код, переключите на Использовать тег [Code] и нажмите ОК
На этом всё. »
Спасибо! Но в не которых случаях копируется не корректно!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC