Установщик русификатора на Inno Setup

  1. Оффлайн

    Автор темы

    WYLEK

    Звание: Мастер

    Админ

    Сообщений: 1163

    Создано тем: 238

    Рейтинг: 10

    Репа: (63|63|0)

    Небольшие хитрости для установки русификатора.

    Задача:
    1. Вывод заставки
    2. Проиграть музыку или еще какие либо прибамбасы
    3. Пропатчить основной файл – слишком большой для простой установки или замены

    Почти все задачи выполняет PatchWise Free, но чтобы выполнить полностью поставленные задачи, не надо быть программистом или гуру в установщиках. Для этих целей возьмем Inno Setup и с помощью скрипта сделаем все как надо. Сразу надо сделать с помощью PatchWise Free укороченный патч. Делает патч и Inno Setup, но рабочих скриптов я так и не нашел в сети. Да и зачем огород городить, если есть PatchWise Free?

    Создаем патч на екзешник и пишем инфу

    Установщик русификатора на Inno Setup



    Все данные Документации удаляем, это все будет в Inno Setup



    Обязательно переключаем стиль программы на Simple



    Если все правильно сделали, то при прогоне патча вид будет такой как ниже.



    Я немного откорректировал инфу в PatchWise Free (языковые файлы).
    Итак, установщик готов и весит…..79кб
    Но время маленьких патчей ушло, сколько лет за Спасибо русики делал :D , и мы теперь увеличим размер установщика без всякого хлама, а естественным способом.
    С помощью InnoSetup мы создадим установщик для запуска русика и прибамбасов. Скопируйте скрипт ниже и вставьте его в InnoSetup
    Скачайте
    Внимание! У вас нет прав для просмотра скрытого текста.
    для тестирования. Там нужные файлы и пустой скрипт.

    ;InnoSetupVersion=5.3.3
    
    
    [Setup]AppName=VMware ThinApp
    AppVerName=4.6.1-361923
    AppVersion=VMware ThinApp
    DefaultDirName={pf}VMwareVMware ThinApp
    DefaultGroupName=VMware ThinApp
    OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
    Compression=bzip
    LicenseFile=embeddedLicense.rtf
    WizardImageFile=embeddedWizardImage.bmp
    WizardSmallImageFile=    embeddedWizardSmallImage.bmp
    DisableDirPage=true
    DisableProgramGroupPage=true
    DisableReadyPage=true
    DisableFinishedPage=true
    Restar t If  NeededByRun=false
    PrivilegesRequired=poweruser
    SetupIconFile=embedded128.ico
    
    
    [Files]Source: {app}vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall
    Source: embeddedlogo.bmp; Flags: dontcopy
    ; начальная заставка:
    Source: embeddedlogo.wav; Flags: dontcopy
    ; музон
    Source: embeddedWizModernImage-Is.bmp; Flags: dontcopy
    ; картинка слева:
    Source: filtersInnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
    Source: filterscallnsis.dll; Flags: dontcopy
    Source: filtersAdvSplash.dll; Flags: dontcopy
    Source: filterswaterctrl.dll; Flags: dontcopy
    ; эффекты
    
    
    [Run]Filename: {tmp}vmware.exe; Flags: waituntilidle
    
    
    [CustomMessages]Russian.NameAndVersion=%1, версия %2
    Russian.AdditionalIcons=Дополнительные значки:
    Russian.CreateDesktopIcon=Создать значок на Рабочем столе
    Russian.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
    Russian.ProgramOnTheWeb=Сайт %1 в Интернете
    Russian.UninstallProgram=Деинсталлировать %1
    Russian.LaunchProgram=Запустить %1
    Russian.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
    Russian.AssocingFileExtension=Связывание %1 с файлами %2...
    
    
    [Languages]; These files are stubs
    ; To achieve better results after recompilation, use the real language files
    Name: Russian; MessagesFile: compiler:LanguagesRussian.isl
    
    
    [Messages]BeveledLabel=Все права  WYLEK (C) 2011
    
    
    [code]procedure CurPageChanged1(CurPageID: Integer);
    begin
    If CurPageID=wpWelcome then
    begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
    end;
    end;
    
    function callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar): Integer;
    external 'callplug@files:callnsis.dll stdcall';
    
    procedure InitializeWizard2();
    var
           val: Integer;
    begin
           ExtractTemporaryFile('AdvSplash.dll');
           ExtractTemporaryFile('logo.bmp');
           ExtractTemporaryFile('logo.wav');
           val:=callplug(0,ExpandConstant('{tmp}AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}logo'),'','','','','');
    end;
    
    procedure CurPageChanged(CurPageID: Integer);
    begin
           CurPageChanged1(CurPageID);
    end;
    
    procedure InitializeWizard();
    begin
           InitializeWizard2();
    end;


    Теперь сделайте компиляцию проекта и запускайте установщик. Все идет как по маслу – эффекты, лицензия и окно установщика. Пользователь даже не заметит, что работают два установщика. Этот метод применяется везде – это не домашняя заготовка. Когда-то при переводе Aimersoft DVD Studio Pack я обнаружил в контейнере шесть екзешников.



    И тут возникает по ходу дела мысль – создать RuPack с заводским установщиком и своим русиком…

    Для этой цели вставляем установщик vmware-thinapp-enterprise-4.6.1-361923.exe в папку {app} и дописываем строку в секцию [Files]

    Source: {app}vmware-thinapp-enterprise-4.6.1-361923.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall

    и дописываем строку в секцию [Run]

    Filename: {tmp}vmware-thinapp-enterprise-4.6.1-361923.exe; Flags: hidewizard

    Запускаем компиляцию, и после запуск установщика. Берем бубен и танцуем вокруг компа…
    Чтобы скрыть от глаз чайников путь временной установки файлов, дописываем код в самый низ секции

    procedure HideInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := False;
    end;
    //*******//
    procedure ShowInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := True;
    end;


    И дописываем на свои файлы вызов этой процедуры. Вот полный скрипт. Скомпилируйте и на запуск! Путь файлов больше не виден при установке.

    ;InnoSetupVersion=5.3.3
    
    
    [Setup]AppName=VMware ThinApp
    AppVerName=4.6.1-361923
    AppVersion=VMware ThinApp
    DefaultDirName={pf}VMwareVMware ThinApp
    DefaultGroupName=VMware ThinApp
    OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
    Compression=bzip
    LicenseFile=embeddedLicense.rtf
    WizardImageFile=embeddedWizardImage.bmp
    WizardSmallImageFile=    embeddedWizardSmallImage.bmp
    DisableDirPage=true
    DisableProgramGroupPage=true
    DisableReadyPage=true
    DisableFinishedPage=true
    Restar t If  NeededByRun=false
    PrivilegesRequired=poweruser
    SetupIconFile=embedded128.ico
    
    
    [Files]Source: {app}vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
    Source: {app}vmware-thinapp-enterprise-4.6.1-361923.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
    Source: embeddedlogo.bmp; Flags: dontcopy
    ; начальная заставка:
    Source: embeddedlogo.wav; Flags: dontcopy
    ; музон
    Source: embeddedWizModernImage-Is.bmp; Flags: dontcopy
    ; картинка слева:
    Source: filtersInnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
    Source: filterscallnsis.dll; Flags: dontcopy
    Source: filtersAdvSplash.dll; Flags: dontcopy
    Source: filterswaterctrl.dll; Flags: dontcopy
    ; эффекты
    
    
    [Run]Filename: {tmp}vmware-thinapp-enterprise-4.6.1-361923.exe; Flags: hidewizard
    Filename: {tmp}vmware.exe; Flags: hidewizard
    
    
    [CustomMessages]Russian.NameAndVersion=%1, версия %2
    Russian.AdditionalIcons=Дополнительные значки:
    Russian.CreateDesktopIcon=Создать значок на Рабочем столе
    Russian.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
    Russian.ProgramOnTheWeb=Сайт %1 в Интернете
    Russian.UninstallProgram=Деинсталлировать %1
    Russian.LaunchProgram=Запустить %1
    Russian.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
    Russian.AssocingFileExtension=Связывание %1 с файлами %2...
    
    
    [Languages]; These files are stubs
    ; To achieve better results after recompilation, use the real language files
    Name: Russian; MessagesFile: compiler:LanguagesRussian.isl
    
    
    [Messages]BeveledLabel=Все права  WYLEK (C) 2011
    
    
    [code]procedure CurPageChanged1(CurPageID: Integer);
    begin
    If CurPageID=wpWelcome then
    begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
    end;
    end;
    
    function callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar): Integer;
    external 'callplug@files:callnsis.dll stdcall';
    
    procedure InitializeWizard2();
    var
           val: Integer;
    begin
           ExtractTemporaryFile('AdvSplash.dll');
           ExtractTemporaryFile('logo.bmp');
           ExtractTemporaryFile('logo.wav');
           val:=callplug(0,ExpandConstant('{tmp}AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}logo'),'','','','','');
    end;
    
    procedure CurPageChanged(CurPageID: Integer);
    begin
           CurPageChanged1(CurPageID);
    end;
    
    procedure InitializeWizard();
    begin
           InitializeWizard2();
    end;
    
    procedure HideInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := False;
    end;
    //*******//
    procedure ShowInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := True;
    end;


    Итак, конечный пользователь сам того не ведая, скачивает установщик и русификатор вместе и дает возможность русификаторщику заработать на нем 1 рубль. Но надо и пользователю дать возможность выбирать при установке или программу или русификатор. Что для этого надо? Правильно, бестолковка! Нужно создать задачу для этого. Пишем так…

    
    [Tasks]Name: additional; Description: Выберите желаемое действие
    Name: additionalPROG; Description: Установить VMware ThinApp_4.6.1-361923; Flags: unchecked
    Name: additionalRUS; Description: Установить русификатор; Flags: unchecked
    Name: additionalADAM; Description: Посетить сайт русификации; Flags: unchecked
    
    
    [Run]Filename: {tmp}vmware-thinapp-enterprise-4.6.1-361923.exe; Tasks: additionalPROG; Flags: hidewizard
    Filename: {tmp}vmware.exe; Tasks: additionalRUS; Flags: hidewizard
    Filename: http://www.wylek.ru; Tasks: additionalADAM; Flags: shellexec hidewizard


    Третья строчка это переход на наш сайт. Пусть пользователь и это выбирает, не будем насильно открывать страницу после установки софта. Полный скрипт ниже.

    ;InnoSetupVersion=5.3.3
    
    
    [Setup]AppName=VMware ThinApp
    AppVerName=4.6.1-361923
    AppVersion=VMware ThinApp
    DefaultDirName={pf}VMwareVMware ThinApp
    DefaultGroupName=VMware ThinApp
    OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
    Compression=bzip
    LicenseFile=embeddedLicense.rtf
    WizardImageFile=embeddedWizardImage.bmp
    WizardSmallImageFile=   embeddedWizardSmallImage.bmp
    DisableDirPage=true
    DisableProgramGroupPage=true
    DisableReadyPage=true
    DisableFinishedPage=true
    Restart If  NeededByRun=false
    PrivilegesRequired=poweruser
    SetupIconFile=embedded128.ico
    
    
    [Files]Source: {app}vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
    Source: {app}vmware-thinapp-enterprise-4.6.1-361923.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
    Source: embeddedlogo.bmp; Flags: dontcopy
    ; начальная заставка:
    Source: embeddedlogo.wav; Flags: dontcopy
    ; музон
    Source: embeddedWizModernImage-Is.bmp; Flags: dontcopy
    ; картинка слева:
    Source: filtersInnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
    Source: filterscallnsis.dll; Flags: dontcopy
    Source: filtersAdvSplash.dll; Flags: dontcopy
    Source: filterswaterctrl.dll; Flags: dontcopy
    ; эффекты
    
    
    [Tasks]Name: additional; Description: Выберите желаемое действие
    Name: additionalPROG; Description: Установить VMware ThinApp_4.6.1-361923; Flags: unchecked
    Name: additionalRUS; Description: Установить русификатор; Flags: unchecked
    Name: additionalADAM; Description: Посетить сайт русификации; Flags: unchecked
    
    
    [Run]Filename: {tmp}vmware-thinapp-enterprise-4.6.1-361923.exe; Tasks: additionalPROG; Flags: hidewizard
    Filename: {tmp}vmware.exe; Tasks: additionalRUS; Flags: hidewizard
    Filename: http://www.wylek.ru; Tasks: additionalADAM; Flags: shellexec hidewizard
    
    
    [CustomMessages]Russian.NameAndVersion=%1, версия %2
    Russian.AdditionalIcons=Дополнительные значки:
    Russian.CreateDesktopIcon=Создать значок на Рабочем столе
    Russian.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
    Russian.ProgramOnTheWeb=Сайт %1 в Интернете
    Russian.UninstallProgram=Деинсталлировать %1
    Russian.LaunchProgram=Запустить %1
    Russian.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
    Russian.AssocingFileExtension=Связывание %1 с файлами %2...
    
    
    [Languages]; These files are stubs
    ; To achieve better results after recompilation, use the real language files
    Name: Russian; MessagesFile: compiler:LanguagesRussian.isl
    
    
    [Messages]BeveledLabel=Все права  WYLEK (C) 2011
    
    
    [Code]procedure CurPageChanged1(CurPageID: Integer);
    begin
    If CurPageID=wpWelcome then
    begin
    SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
    SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
    end;
    end;
    
    function callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar): Integer;
    external 'callplug@files:callnsis.dll stdcall';
    
    procedure InitializeWizard2();
    var
          val: Integer;
    begin
          ExtractTemporaryFile('AdvSplash.dll');
          ExtractTemporaryFile('logo.bmp');
          ExtractTemporaryFile('logo.wav');
          val:=callplug(0,ExpandConstant('{tmp}AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}logo'),'','','','','');
    end;
    
    procedure CurPageChanged(CurPageID: Integer);
    begin
          CurPageChanged1(CurPageID);
    end;
    
    procedure InitializeWizard();
    begin
          InitializeWizard2();
    end;
    
    procedure HideInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := False;
    end;
    //*******//
    procedure ShowInstallPath();
    begin
    WizardForm.FileNameLabel.Visible := True;
    end;


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



    Качаем архив с эффектами, установщиком русика и пустым скриптом. Сам файл vmware-thinapp-enterprise-4.6.1-361923.exe скачаете в разделе Портабл у кого его еще нет.
    И самое главное, Вы можете использовать этот метод для своих целей! Просто замените файлы в скрите и в папках на свои.

    **********Далі буде**********


    Кстати, вот здесь я уже применил[/leech] этот метод. Еще добавил в задачу запуск программы.

    Сообщение отредактировал WYLEK 4 августа 2018 - 21:52

    6 мая 2011 - 14:42 / #1
  2. Оффлайн

    Dodakaedr

    Звание: Новичок

    Проверенные

    Сообщений: 20

    Создано тем: 0

    Рейтинг: 2

    Репа: 0

    Цитата: Kopejkin
    Если возможно, пожалуйста, перезалейте удаленный файл.
    Поддерживаю! Перезалейте, пожалуйста.
    Сообщение отредактировал WYLEK 4 августа 2018 - 00:15
    5 июня 2014 - 09:12 / #2
  3. Оффлайн

    pp0312

    Звание: Сталкер

    Мастер

    Сообщений: 111

    Создано тем: 24

    Рейтинг: 3

    Репа: (9|9|0)

    Цитата: Dodakaedr;11982
    Поддерживаю! Перезалейте, пожалуйста.


    Скачать
    Сообщение отредактировал WYLEK 4 августа 2018 - 00:16
    5 июня 2014 - 16:26 / #3
  4. Оффлайн

    Dodakaedr

    Звание: Новичок

    Проверенные

    Сообщений: 20

    Создано тем: 0

    Рейтинг: 2

    Репа: 0

    pp0312, Спасибо!
    5 июня 2014 - 20:41 / #4

Статистика форума, пользователей онлайн: 1 (за последние 20 минут)

Создано тем
862
Всего сообщений
7533
Пользователей
14570
Новый участник
Al Shi