Войти
  1. ВКонтакте
  2. Facebook
  1. »
  2. »
  3. »
  4. Скрипт русификатора
Скрыть панель справаПоказать панель справа

Скрипт русификатора

Мастер
  1. Офлайн
  2. Админ
  3. 1593 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 1 отправлено 21:32, 31.01.2014
Предоставляю вам рабочий скрипт для , на мой взгляд, самого лучшего установщика Inno.


Немного теории...

Для подготовленный пользователей установка русификатора не составляет проблем, мозги и руки срабатывают в унисон автоматом.
Но для начинающих пользователей установка русификатора это танцы с бубном, а если установщика нет и предлагается замена папок - настает полный пипец.
Итак, что должен уметь установщик, чтобы конечный пользователь не испытывал этих неудобств.

Что могёт этот скрипт?

1. Автоматически определяет папку установки и обновляемые файлы, если найдены, то установка продолжится, если нет, то вас оповестят об этом.
2. Проверяет вначале установки запущена ли обновляемая программа. Если выполняется, то будет предложено завершить процесс и продолжить или прекратить установку русификатора. Если пользователь продолжил установку, то все обновляемые файлы будут перемещены в папку Backup.
3. Проверяет контрольную сумму обновляемого файла. Исход обычный - или установка или пишите письма на деревню дедушке.
4. Так как русификаторы я создаю для своего сайта, то вставил фишку проверки внешнего файла на присутствие и на целостность. Исход такой же, как пунктом выше.
5. И немаловажная фишка - если по какой то причине пользователю не понравился русификатор, и он хочет вернуть все назад, то ему просто надо запустить деинсталляцию русификатора. При этом будет проверка запущена ли программа. Если выполняется, то будет предложено завершить процесс и продолжить или прекратить удаление. Если пользователь продолжил удаление, то все сохраненные файлы в папке Backup будут перемещены на их родное место.


А теперь скрипт и немного описания, я коротко на каждую функцию вставил уже туда.

На этой картинке все обычно, вставляете свои данные и всего делов то. Вверху данные Inno Setup Preprocessor.
Единственно я использую для сборок и русификаторов разные файлы языка (внизу). Этот файл в архиве.



Это файлы, которые нужно вставить в программу. Все прописывается как в блокноте напрямую - пути и имена.
За выделенное напишу ниже.



Это работа с реестром. Например в этой программе надо было при вставке файла-лекарства LicenseMgr.dll очистить ветку реестра перед установкой русификатора.
Зачем? Просто если уже был установлен ключ от версии EaseUS Partition Master Pro, а это лекарство для EaseUS Partition Master Technician Edition, то запустить программу вам не удастся. Нужно вручную зайти в реестр и удалить ветку. Здесь же делает это за вас установщик. Обратите внимание - для 32-бит и 64-бит разные ключи. Реализовывается это просто - на картинке где стрелка 2 для 64-бит, а где стрелка 3 для 32-бит. Стрелка 1 удаляет ветку перед установкой.



Если надо прописать значения, вот пример скрипта, здесь я перенес строки чтобы влезли на картинку.



Это задачи, тут вы можете прописывать что угодно. Установлены радиокнопки одного действия. Только один выбор - или одно или другое.
Задача doktor подключает файл LicenseMgr.dll в работу и он заносится в папку с программой. Ну а если выбрали другое, то установка происходит без лекарства.



Вот мы и подобрались к самому интересному. Это код бэкапа, он работает вместе с файлами - нужно прописать BeforeInstall: CreateBackup для каждого заменяемого файла.
Смотрите второй рисунок сверху где раздел Files. Все бэкапится в папку Backup. Для работы этого кода нужен скрипт SHFileOperation.iss. Положил в архив.



Это проверка проверка MD5 ехе-файла, стрелки указывают что нужно заменить для своих целей.



Это проверка проверка MD5 внешнего файла, стрелки указывают что нужно заменить для своих целей.
Этот файл должен всегда быть рядом с установщиком. При любых действиях с ним русификатор не установится.
Вы можете прицепить любой файл.



Это проверка на присутствие определенных файлов в папке с установленной программой, стрелки указывают что нужно заменить для своих целей.



Это проверка на присутствие файла рядом с установщиком. Если его нет рядом с ним то русификатор не установится.



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



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




Но вот в принципе и вся сказка...
Еще раз напоминаю - не переносите строки в рабочем скрипте как на картинках - это я сделал чтобы уменьшить их размер.


Качаем архив...

Доступно только для пользователейАрхив
Сталкер
  1. Офлайн
  2. Знаток
  3. 139 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 2 отправлено 22:13, 31.01.2014
del

Спасибо.

Последний раз редактировал Kopejkin 22:46, 31.01.2014
Мастер
  1. Офлайн
  2. Админ
  3. 1593 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 3 отправлено 22:30, 31.01.2014
Цитата Kopejkin ()
Я бы скачал, но он где-то за облаками спрятался...


Залил на другое облако biggrin
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 885 сообщений
  4. Репутация: 6
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 4 отправлено 01:00, 01.02.2014
Я как мужика с молотком на главной увидел и надпись "Универсальный скрипт русификатора...", то грешным делом подумал ,что ты предлагаешь таким макаром русики устанавливать. biggrin Порадовал.
Статья отличная. Но думаю, что нужен некоторый опыт работы с этим инсталлятором, чтобы во всем этом разобраться. Начинающие утонут. Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку (см. рис. 2).


------------------------------------------
Кто ищет, тот всегда найдет!
Мастер
  1. Офлайн
  2. Админ
  3. 1593 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 5 отправлено 11:52, 01.02.2014
Цитата Leserg ()
Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку


Да, упустил это. Но для начинающих делать нечего - это для подготовленных пользователей.
Кстати, не все вручную надо прописывать - в настройках кроме кода можно установкой гальки прописать biggrin
Сталкер
  1. Офлайн
  2. Знаток
  3. 132 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 6 отправлено 13:50, 02.02.2014
cool пробовал  с помощью Inno Extractor выдернуть скрипт и посмотреть, но все время фигушки  happy
Цитата WYLEK ()
предлагается замена папок - настает полный пипец.
Для этого есть простенькая программа Patch Maker  конечна она лишена многих прелестей, но патчер сделает любой юзер.
 Урок суперный, главное его теперь в свою голову запихать. Спасибо
Прибывший
  1. Офлайн
  2. Стажер
  3. 9 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 7 отправлено 20:16, 02.02.2014
Цитата Leserg ()
Начинающие утонут.
Да, это так! Ещё в июне ушёл в изучение Inno Setup, так и не вышел. Сложно, но какая радость когда что то выходит! (Особенно что нибудь в секции  Код)


WYLEK, я бы на вашем месте сделал так. Меньше изменять под новый русификатор.



За статью спасибо. Может что нибудь нового узнаю.

Последний раз редактировал BullFFm 09:05, 01.05.2014
Мастер
  1. Офлайн
  2. Админ
  3. 1593 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 8 отправлено 22:21, 02.02.2014
Цитата BullFFm ()
Как это всё происходит, считывается запись (#define MyAppName "Тут название") и считанное записывается туда где стоит {# MyAppName}


Нет, в секции Code прописывать только вручную.


Мое первое знакомство с Inno Setup было ровно 1 минута...
Больше года и не подходил к этому установщику, а теперь я и не помню сколько лет другого мне и не надо.
У нас на сайте есть Мастер кода Gnom, так что если есть проблемы - пишите, я думаю он поможет.
Прибывший
  1. Офлайн
  2. Стажер
  3. 9 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 9 отправлено 22:36, 02.02.2014
Цитата WYLEK ()
Нет, в секции Code прописывать только вручную.
Почему? Я делаю так как написал выше и всё работает, можете попробовать.

Я  познакомился с Inno Setup так же. Товарища Gnom'a видел на сайте и знаком с его работами но всё равно спасибо за совет.
Мастер
  1. Офлайн
  2. Админ
  3. 1593 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 10 отправлено 23:46, 02.02.2014
Цитата BullFFm ()
Почему? Я делаю так как написал выше и всё работает, можете попробовать.


Для универсальности этого скрипта можно и так сделать как предлагаешь.



Все работает.


да, переделанный скрипт вот

Доступно только для пользователей
Код
; MyAppExeName - исполлняемый файл
; MyAppExeName1 - папка установки исполняемого файла
; MyAppExeName2 - папка внешнего файла
; MyAppExeName3 - проверка внешнего файла
; MyAppExeName4 - проверка каталога установки (куда устанавливается исполняемый файл)

#include "SHFileOperation.iss"
#define MyAppName "EaseUS Partition Master 9.3.0"
#define MyAppVersion "9.3.0"
#define MyAppExeName "Main.exe"
#define MyAppExeName1 "bin\Main.exe"
#define MyAppExeName2 "{src}\License.rtf"
#define MyAppExeName3 "{src}"
#define MyAppExeName4 "{app}\bin"

[Setup]AppId={{D7A87451-8257-47B6-B7C6-FB937BA994C4}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName={pf}\EaseUS\{#MyAppName}
DefaultGroupName={#MyAppName}
LicenseFile=embedded\License.rtf
OutputBaseFilename=EaseUS PM 9.3.0 RUS
Compression=lzma
SolidCompression=true
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
EnableDirDoesntExistWarning=false
DirExistsWarning=no
SetupIconFile=embedded\Icon Entry_8.ico

[Languages]Name: russian_rusik; MessagesFile: compiler:Languages\Russian_rusik.isl

[Files]Source: dll\ISTask.dll; DestDir: {app}; Flags: ignoreversion
Source: {app}\bin\Main.exe; DestDir: {app}\bin; Flags: ignoreversion; BeforeInstall: CreateBackup
Source: {app}\bin\CallbackOperator.mo; DestDir: {app}\bin; Flags: ignoreversion; BeforeInstall: CreateBackup
Source: {app}\bin\LicenseMgr.dll; DestDir: {app}\bin; Flags: ignoreversion; BeforeInstall: CreateBackup; Tasks: doktor
Source: {app}\bin\libgtk-win32-2.0-0.dll; DestDir: {app}\bin; Flags: ignoreversion; BeforeInstall: CreateBackup
Source: {app}\share\themes\Epm\gtk-2.0\icons\500x140-epm-update-info.bmp; DestDir: {app}\share\themes\Epm\gtk-2.0\icons; Flags: ignoreversion
Source: {app}\share\themes\Epm\gtk-2.0\icons\560x350-epm-main-flash-win32.bmp; DestDir: {app}\share\themes\Epm\gtk-2.0\icons; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Registry]Root: "HKLM"; Subkey: "SOFTWARE\Wow6432Node\EASEUS\EPM"; Flags: deletekey uninsdeletekeyifempty; Check: IsWin64
Root: "HKLM"; Subkey: "SOFTWARE\EASEUS\EPM"; Flags: deletekey uninsdeletekeyifempty; Check: not IsWin64

[Icons]Name: {group}\{cm:UninstallProgram,русификатор}; Filename: {uninstallexe}

[Tasks]Name: doktor; Description: Вылечить к Technician Edition?; Flags: exclusive
Name: asa; Description: Я честный человек и введу личный код; Flags: exclusive

[Code]// -------------Описание: бэкап-------------------------------------------------
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;

// -------------Описание: проверка MD5 ехе-файла--------------------------------
//Не забываем вставить порверку на присутствие проверяемого файла
procedure CurStepChanged2(CurStep: TSetupStep);
var
    MD5,s:string;
    begin
   If CurStep=ssInstall
then
    begin
      MD5 := GetMD5OfFile(ExpandConstant('{app}\{# MyAppExeName1}'));
       If not (MD5 = 'bcfded83efd000063bb932f9412a1617') then
      begin
        s:='Ошибка MD5 в исполняемом файле!' #13#13 'Обновление прекращено.';
        MsgBox(s, mbCriticalError, mb_Ok); //Если хеш файла(ов) не соответствует, выдается сообщение, и на этом все действия прекращаются.
      WizardForm.Close; //Закрытие инсталлятора
      Exit; //Прерывание и откат всех действий
end;
end;
end;
//Не забываем дописать еще такую процедуру
procedure CancelButtonClick2(CurPage: Integer; var Cancel, Confirm: Boolean);
    begin
    Cancel:=True;
   If CurPage=12 //Это непосредственно страница с индикатором выполнения
then
    begin
    Confirm:=False; //На этой странице отключаем появление сообщения при нажатии на кнопку Отмена
end;
end;

// -------------Описание: проверка MD5 внешнего файла---------------------------
//Не забываем вставить порверку на присутствие проверяемого файла
procedure CurStepChanged3(CurStep: TSetupStep);
var
    MD5,s:string;
    begin
   If CurStep=ssInstall
then
    begin
      MD5 := GetMD5OfFile(ExpandConstant('{# MyAppExeName2}'));
       If not (MD5 = '3fa58c7b6df5485f32ed7bdafb33f53f') then
      begin
        s:='Восстановите оригинальный файл License.rtf!' #13#13 'А этот файл оставьте себе на память :)';
        MsgBox(s, mbCriticalError, mb_Ok); //Если хеш файла(ов) не соответствует, выдается сообщение, и на этом все действия прекращаются.
      WizardForm.Close; //Закрытие инсталлятора
      Exit; //Прерывание и откат всех действий
end;
end;
end;
//Не забываем дописать еще такую процедуру
procedure CancelButtonClick1(CurPage: Integer; var Cancel, Confirm: Boolean);
    begin
    Cancel:=True;
   If CurPage=12 //Это непосредственно страница с индикатором выполнения
then
    begin
    Confirm:=False; //На этой странице отключаем появление сообщения при нажатии на кнопку Отмена
end;
end;

// -------------Описание: проверка каталога установки---------------------------
// Проверка присутствия определенных файлов в папке с установленной программой на странице выбора папки назначения
function NextButtonClick4(CurPage: Integer): Boolean;
var
    s:string;
begin
    Result:=True;
    If CurPage=6 then
   begin
     If (FileSearch('{# MyAppExeName}', ExpandConstant('{# MyAppExeName4}'))='')
    then
     begin
       s:='Извините, в директории '+ExpandConstant('{# MyAppExeName4}')+'' #13 'не обнаружены файлы, подтверждающие подлинность программы.' #13#13 'Пожалуйста, выберите правильный путь для установки обновления.';
       MsgBox(s, mbError, mb_Ok);
       Result:= False
     end;
   end;
end;

// -------------Описание: проверка внешнего файла-------------------------------
// Проверка присутствия определенных файлов в папке с установщиком
function NextButtonClick5(CurPage: Integer): Boolean;
var
    s:string;
begin
    Result:=True;
    If CurPage=6 then
   begin
     If (FileSearch('License.rtf', ExpandConstant('{# MyAppExeName3}'))='')
    then
     begin
       s:='Внимание! ' #13#13 'Файл License.rtf является неотъемлемой частью русификатора. ' #13 'Вы по наивности или случайно удалили этот файл из папки '+ExpandConstant('{src}')+'' #13 'Придется вам восстановить оригинальный файл для продолжения установки :)';

       MsgBox(s, mbError, mb_Ok);
       Result:= False
     end;
   end;
end;

// -------------Описание: закрыть процесс_удаление------------------------------
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';

//**************************************************//

procedure CurUninstallStepChanged6(CurUninstallStep: TUninstallStep);
begin
     if CurUninstallStep = usUninstall then
       if RunTask_U('{# MyAppExeName}', False) then
       begin
         // прячем форму
         UninstallProgressForm.Visible := False;
         if MsgBox('Программа EaseUS Partition Master используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then
         begin
           KillTask_U('{# MyAppExeName}');
           UnloadDll(ExpandConstant('{app}\ISTask.dll'));
           // показываем форму
           UninstallProgressForm.Visible := True;
         end
         else
         begin
           MsgBox('Завершите работу EaseUS Partition Master, затем снова запустите программу удаления.', mbInformation, MB_OK);
           UnloadDll(ExpandConstant('{app}\ISTask.dll'));
           Abort;
         end;
       end;
end;

// -------------Описание: закрыть процесс_установка-----------------------------
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';

//**************************************************//
function InitializeSetup7(): Boolean;
begin
    If RunTask('{# MyAppExeName}', false) then
      begin
        if MsgBox('Программа EaseUS Partition Master используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
          begin
            KillTask('{# MyAppExeName}');
            Result:= True;
          end else
            Exit;
      end;
Result:=True;
end;

// -------------Описание: Команда WYLEK.RU--------------------------------------
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 InitializeWizard8();
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;

// -------------Описание: Диспетчеризация кода----------------------------------
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
    CurUninstallStepChanged1(CurUninstallStep);
    CurUninstallStepChanged6(CurUninstallStep);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
    CurStepChanged2(CurStep);
    CurStepChanged3(CurStep);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
    Result := NextButtonClick4(CurPageID); if not Result then exit;
    Result := NextButtonClick5(CurPageID); if not Result then exit;
end;

function InitializeSetup(): Boolean;
begin
    Result := InitializeSetup7(); if not Result then exit;
end;

procedure InitializeWizard();
begin
    InitializeWizard8();
end;
Мастер
  1. Офлайн
  2. Администраторы
  3. 1219 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 11 отправлено 01:28, 30.01.2015
не получается прикрутить к скрипту вот это
Код
// -------------Описание: Команда WYLEK.RU--------------------------------------
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 InitializeWizard8();
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;


------------------------------------------
"Возможно всё! На невозможное просто требуется больше времени."
Мудрец из Шангри Ла
Сталкер
  1. Офлайн
  2. Журналисты
  3. 100 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 12 отправлено 19:40, 01.02.2015
gazon01, скрипт свой дай. Можно в личку.
Мастер
  1. Офлайн
  2. Администраторы
  3. 1219 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 13 отправлено 23:46, 04.02.2015
WYLEK,  с защитой от распаковки разобрался, надо было к ISTask.dll дописать noencryption и всего то блин  biggrin  

вот так

 
[Files]Source: dll\ISTask.dll; DestDir: {app}; Flags: ignoreversion noencryption


------------------------------------------
"Возможно всё! На невозможное просто требуется больше времени."
Мудрец из Шангри Ла
Мастер
  1. Офлайн
  2. Админ
  3. 1593 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 14 отправлено 13:59, 05.02.2015
Цитата gazon01 ()
с защитой от распаковки разобрался, надо было к ISTask.dll дописать noencryption и всего то блин

Молоток biggrin но зачем это тебе надо? Утащат русифицированные файлы а не скрипт установщика.
Мастер
  1. Офлайн
  2. Администраторы
  3. 1219 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 15 отправлено 13:50, 07.02.2015
Цитата WYLEK ()
Утащат русифицированные файлы а не скрипт установщика.

ну так для этого надо ещё распаковать или установить программу, ведь там проверка на MD, простому Пупкину это уже будет не интересно, да и так, просто ради прикола biggrin :D biggrin

Gnom, ответил в ЛС


------------------------------------------
"Возможно всё! На невозможное просто требуется больше времени."
Мудрец из Шангри Ла
Прибывший
  1. Офлайн
  2. Участники
  3. 19 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 16 отправлено 21:03, 26.04.2016
От души !!! Благадарен Вам Уважаемый...! WYLEK


------------------------------------------
Windows XP Professional 5.1.2600.2158 SP2(x86_x64)
 
Перейти
Найти

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Последние темы

  1. TotalD
    Автор: druc Вчера, 14:57
  2. Debut Video Capture Pro 4.04 Rus
    Автор: dinis124 12:22, 13.07.2017
  3. Abelssoft HappyCard 2017 1.2.146...
    Автор: dinis124 12:18, 13.07.2017
  4. Athentech Perfectly Clear Workbench...
    Автор: Ashoka 07:45, 13.07.2017
  5. DFX Audio Enhancer 12 RUS
    Автор: AlexSergeev 16:25, 09.07.2017
  6. QT приложения и методы их модификации
    Автор: bellic 12:28, 07.07.2017

Изменения статуса

  1. профиль Вопрос задать в теме для новичков не получается и Админу... Сегодня, 14:57
  2. профиль Не вернусь 18:24, 16.07.2017
  3. профиль Лучше быть бедным чем дешёвым. 17:18, 04.04.2017
  4. профиль Новичок 16:30, 10.02.2017
  5. профиль Офлайн 05:14, 11.12.2016