WYLEK.ru

avatar_WYLEK

Делаем патч в Inno как на PatchWise Free…

Автор WYLEK, 14 июня 2011, 21:55:38

« Скрипт русификатора | Установщик русификатора на Inno Setup »

0 Пользователи и 1 гость просматривают эту тему.

WYLEKАвтор темы

#45
А вот так будет выглядеть скрипт на Chasys Draw IES Artist с папкой Backup

Показать / Скрыть текст
#include "SHFileOperation.iss"  
[Setup]AppName=Chasys Draw IES  
AppVersion=4.12.05
;AppVerName=4.12.05
UsePreviousAppDir=true
DefaultDirName={pf}John Paul Chacha's LabChasys Draw IES
Uninstallable=yes
Compression=lzma2/ultra64
SolidCompression=true
OutputBaseFilename=Chasys Draw IES_4.12.05_RUS
LicenseFile=embeddedLicense.rtf
WizardImageFile=embeddedWizModernImage-Is.bmp
WizardSmallImageFile=embeddedWizardSmallImage.bmp
SetupIconFile=embeddedWXI.ico
EnableDirDoesntExistWarning=True
DirExistsWarning=no
DefaultGroupName=John Paul Chacha's LabChasys Draw IES
[Files]Source: "dllISTask.dll"; DestDir: "{app}"; Flags: solidbreak
Source: "{app}Artist.exe"; DestDir: "{app}"; DestName: "Artist.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}cfg_Files.exe"; DestDir: "{app}"; DestName: "cfg_Files.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}cfg_Language.exe"; DestDir: "{app}"; DestName: "cfg_Language.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}cfg_Portable.exe"; DestDir: "{app}"; DestName: "cfg_Portable.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}Converter.exe"; DestDir: "{app}"; DestName: "Converter.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}awPhoto.exe"; DestDir: "{app}"; DestName: "rawPhoto.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}Update.exe"; DestDir: "{app}"; DestName: "Update.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
Source: "{app}LanguageRussian.lang"; DestDir: "{app}Language"; DestName: "Russian.lang"; Flags: ignoreversion; MinVersion: 0.0,5.0
[Icons]Name: "{group}Удалить русификатор"; Filename: "{uninstallexe}"; WorkingDir: "{app}"
[Run]Filename: "{app}Artist.exe"; WorkingDir: "{app}"; Flags: postinstall unchecked
Filename: "http://www.wylek.ru"; Flags: shellexec waituntilidle hidewizard; Tasks: ADAM
[Tasks]Name: "ADAM"; Description: "Посетить сайт русификации"
[CustomMessages]ru.NameAndVersion=%1, версия %2
ru.AdditionalIcons=Дополнительные значки:
ru.CreateDesktopIcon=Создать значок на Рабочем столе
ru.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
ru.ProgramOnTheWeb=Сайт %1 в Интернете
ru.UninstallProgram=Деинсталлировать %1
ru.LaunchProgram=Запустить %1
ru.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
ru.AssocingFileExtension=Связывание %1 с файлами %2...
[Languages]Name: "ru"; MessagesFile: "compiler:LanguagesRussian_rusik.isl"
[Code]// --- Source: папка и бэкап.iss ------------------------------------------------------------
function MoveFile(const srcFile, destFile: PChar):Integer;  
external 'MoveFileA@kernel32.dll stdcall';  
procedure CurUninstallStepChanged1(CurUninstallStep: TUninstallStep);  
begin  
if CurUninstallStep = usPostUninstall then  
begin  
MoveDir(ExpandConstant('{app}Backup'),ExpandConstant('{app}'));  
RemoveDir(ExpandConstant('{app}Backup'));  
end;  
end;  
procedure CreateBackup;  
var  
srcFile, destFile: string;  
basePath, shortPath: string;  
begin  
basePath:= ExpandConstant('{app}');  
srcFile:= ExpandConstant(CurrentFileName);  
shortPath:= srcFile;  
StringChangeEx(shortPath, basePath, '', True);  
destFile:= ExpandConstant('{app}Backup') + shortPath;  
ForceDirectories(ExtractFilePath(destFile));  
MoveFile(PChar(srcFile), PChar(destFile));  
end;  
// --- Source: проверка MD5.iss ------------------------------------------------------------
//Не забываем вставить порверку на присутствие проверяемого файла
procedure CurStepChanged2(CurStep: TSetupStep);
var
   MD5,s:string;
   begin
  If CurStep=ssInstall
then
   begin
     MD5 := GetMD5OfFile(ExpandConstant('{app}Artist.exe'));
      If not (MD5 = '919f06cd9e7ac0dd98f673f493af5518') then
     begin
       s:='Ошибка MD5 в File.exe!' #13#13 'Обновление прекращено.';
       MsgBox(s, mbCriticalError, mb_Ok); //Если хеш файла(ов) не соответствует, выдается сообщение, и на этом все действия прекращаются.
     WizardForm.Close; //Закрытие инсталлятора
     Exit; //Прерывание и откат всех действий
end;
end;
end;
//Не забываем дописать еще такую процедуру
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
   begin
   Cancel:=True;
  If CurPage=12 //Это непосредственно страница с индикатором выполнения
then
   begin
   Confirm:=False; //На этой странице отключаем появление сообщения при нажатии на кнопку Отмена
end;
end;
// --- Source: проверка каталога.iss ------------------------------------------------------------
// Проверка присутствия определенных файлов в папке с установленной программой на странице выбора папки назначения
function NextButtonClick3(CurPage: Integer): Boolean;
var
   s:string;
begin
   Result:=True;
   If CurPage=6 then
  begin
    If (FileSearch('Artist.exe', ExpandConstant('{app}'))='')
   then
    begin
      s:='Извините, в директории '+ExpandConstant('{app}')+'' #13 'не обнаружены файлы, подтверждающие подлинность программы.' #13#13 'Пожалуйста, выберите правильный путь для установки обновления.';
      MsgBox(s, mbError, mb_Ok);
      Result:= False
    end;
  end;
end;
// --- Source: закрыть процесс2.iss ------------------------------------------------------------
function KillTask_S(ExeFileName: string): Integer;
    external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask_S(FileName: string; bFullpath: Boolean): Boolean;
    external 'RunTask@files:ISTask.dll stdcall delayload';
function RunTask_U(FileName: string; bFullpath: Boolean): Boolean;
    external 'RunTask@{app}ISTask.dll stdcall delayload uninstallonly';
function KillTask_U(ExeFileName: string): Integer;
    external 'KillTask@{app}ISTask.dll stdcall delayload uninstallonly';
//**************************************************//
function InitializeSetup4(): Boolean;
begin
    if RunTask_S('Artist.exe', false) then
    begin
      if MsgBox('Программа Chasys Draw IES используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
      begin
        KillTask_S('Artist.exe');
        Result := True;
      end else
        Exit;
    end;
    Result := True;
end;
procedure CurUninstallStepChanged4(CurUninstallStep: TUninstallStep);
begin
    if CurUninstallStep = usUninstall then
      if RunTask_U('Artist.exe', False) then
      begin
        // прячем форму
        UninstallProgressForm.Visible := False;
        if MsgBox('Программа Chasys Draw IES используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
        begin
          KillTask_U('Artist.exe');
          UnloadDll(ExpandConstant('{app}ISTask.dll'));
          // показываем форму
          UninstallProgressForm.Visible := True;
        end
        else
        begin
          MsgBox('Завершите работу Chasys Draw IES, затем снова запустите программу удаления.', mbInformation, MB_OK);
          UnloadDll(ExpandConstant('{app}ISTask.dll'));
          Abort;
        end;
      end;
end;
// --- Source: Команда WYLEK.RU.iss ------------------------------------------------------------
var
MouseLabel,SiteLabel: TLabel;
procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.wylek.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clRed
end;
procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;
procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clGreen
end;
procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;
procedure InitializeWizard5();
begin
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm
SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=10
SiteLabel.Top:=320
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='Сайт русификации'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
end;
procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;
// --- Dispatching code ------------------------------------------------------------
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
   CurUninstallStepChanged1(CurUninstallStep);
   CurUninstallStepChanged4(CurUninstallStep);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
   CurStepChanged2(CurStep);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
   Result := NextButtonClick3(CurPageID); if not Result then exit;
end;
function InitializeSetup(): Boolean;
begin
   Result := InitializeSetup4(); if not Result then exit;
end;
procedure InitializeWizard();
begin
   InitializeWizard5();
end;
[свернуть]
https://nick-name.ru/forum1t2/wylek.gif
  •  

Kopejkin

Цитата: WYLEK...перемещаются назад исходные файлы...
Правильно ли я понял, что в первом скрипте, из всего SHFileOperation.iss, вы используете только возможность перемещать с заменой ВСЕ подпапки и файлы папки Backup (fromDir) в папку приложения (toDir)?
  •  

WYLEKАвтор темы

#47
Цитата: KopejkinПравильно ли я понял, что в первом скрипте,

Первый скрипт - это пример из FAQ Ru-Board.chm.
А второй скрипт - это уже собранный код.

Перемещаются в папку Backup только отмеченные файлы на замену (выделено ниже), остальные остаются в исходной папке.

Source: "{app}Artist.exe"; DestDir: "{app}"; DestName: "Artist.exe"; Flags: ignoreversion; MinVersion: 0.0,5.0; BeforeInstall: CreateBackup
https://nick-name.ru/forum1t2/wylek.gif
  •  

BKPB

Спасибо за подробную инструкцию.
  •  

Gyts

Цитата: WYLEKВот здесь скрипт, я проверил его - создается папка бэкап и перемещаются только измененные файлы. После удаления русификатора, перемещаются назад исходные файлы а папка бэкап удаляется.
Не могу понять почему у меня при удалении русификатора исходные файлы не перемещаются назад и папка бэкап не удаляется.
Папка бэкап создаётся, перемещаются только указанные файлы.
Взял код, который показан у Вас, и что обозначает "MinVersion: 0.0,5.0";
  •  

WYLEKАвтор темы

#50
Цитата: GytsНе могу понять почему у меня при удалении русификатора исходные файлы не перемещаются назад и папка бэкап не удаляется.

 Где то ошибку сделал - возможно процесс не убивается или...погадаю еще https://wylek.ru/Smileys/emoticons/biggrin.gif
 Надо сама программа и твой скрипт. Иначе ничего не поможем.
https://nick-name.ru/forum1t2/wylek.gif
  •  

Gyts

Вот код , мне не нужна про?верка на подлинность, нужно заменить файлы, создать бэкап, после удаления русификатора , вернуть  исходные файлы а папку бэкап удалить. ?

 Добавлено (14.02.2015, 16:17:37)
 ---------------------------------------------
 Извините ни как не мог вставить код как у вас с ползунком.

 Добавлено (14.02.2015, 16:23:24)
 ---------------------------------------------
 Хочу разобраться в скрипте поэтапно от простого к сложному и понять какая строка за что отвечает.
 Ошибку нашёл,всё работает. единственно не могу сменить иконку самого установщика, подскажите где какой код вписать.
  •  

WYLEKАвтор темы

#52
Цитата: Gytsне могу сменить иконку самого установщика, подскажите где какой код вписать.

 Так это делается, например, в Inno Script Studio и будет так - SetupIconFile=embeddedMAINICON.ico
https://nick-name.ru/forum1t2/wylek.gif
  •  

WYLEKАвтор темы

#53
Цитата: GytsМожет кто поможет разобраться, в чём причина.

 Так что это за убитый скрипт? И что, работает??? Кинь мне прогу в личку.

 Лишнее писать вот так

 [b]Source: "D:CDK. rus{app}indaEditor3x-dev.exe"; DestDir: "{app}dagor3_cdkin64"; Flags: ignoreversion; BeforeInstall: CreateBackup [/b] 

 надо так, и можно перемещать проект на любой диск или папку и собирать там

 [b]Source: "{app}indaEditor3x-dev.exe"; DestDir: "{app}dagor3_cdkin64"; Flags: ignoreversion; BeforeInstall: CreateBackup[/b] 

 Вот Войдите на сайт для перехода по ссылке есть же рабочий скрипт, что выдумывать то?
https://nick-name.ru/forum1t2/wylek.gif
  •  

Gyts

Цитата: WYLEKнадо так, и можно перемещать проект на любой диск или папку и собирать там
Проблему не решило.
  •  

WYLEKАвтор темы

#55
Цитата: GytsПроблему не решило.

 Так это не для решения проблемы https://wylek.ru/Smileys/emoticons/biggrin.gif
 Скачал игрушку, проверю в работе исправленный скрипт, не умею я виртуально помогать с ошибками.
 В твоем отсутствует секция [Code][/b]
https://nick-name.ru/forum1t2/wylek.gif
  •  

Gyts

Цитата: WYLEKВ твоем отсутствует секция
Секция [Code]есть , она почему то не скопиравалась.
........
Source: "{app}inmissionsunitsaircraft.scheme.nut"; DestDir: "{app}"; Flags: ignoreversion; BeforeInstall: CreateBackup
[Code]// --- Source: папка и бэкап.iss ------------------------------------------------------------   
  function MoveFile(const sreFile, destFile: PAnsiChar): Integer;  
  external 'MoveFileA@kernel32.dll stdcall';
 
  •  

WYLEKАвтор темы

Отправил тебе скрипт и папки
https://nick-name.ru/forum1t2/wylek.gif
  •  

Gyts

Цитата: WYLEKОтправил тебе скрипт и папки
Скрипт и папки получил, собрал русификатор.
При компиляции выдало ошибку на  PChar, заменил везде  PChar на PAnsiChar, русификатор скомпилировался,
но проблему с восстановлением исходных файлов и удаления папки бэкап, не решил,
проверка на наличии файла происходит. русифицированные файлы устанавливаются и удаляются.

Добавлено (08.03.2015, 16:58:20)
---------------------------------------------
Проблема решилась установкой  (Untitled-Inno Setup Compiler version 5.5.5) англ. версии.
  •  

Leserg

WYLEK и Gyts, обговорите между собой, какой вы версией Inno пользуетесь - ANSI или Unicode. Это может быть одно из причин появления ошибок и некорректной работы инсталлятора.
Кто ищет, тот всегда найдет!
 https://nick-name.ru/forum/Leserg.gif
  •  

* Ваши права на сайте

    Light Portal

  • Вы можете просматривать элементы портала
  • Вы не можете управлять блоками
  • Вы не можете управлять своими страницами
  • Вы не можете размещать свои страницы без модерации

    Simple Machines

  • Вы не можете удалять темы.
  • Вы не можете создавать темы.
  • Вы не можете отвечать на сообщения.
  • Вы не можете прикреплять файлы.
  • Вы не можете изменять свои сообщения.
  • Вы не можете удалять свои сообщения.

Яндекс.Метрика Каталог@MAIL.RU - каталог ресурсов интернет