1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вопрос Как создать свои ключи командной строки?

Тема в разделе "Inno Setup", создана пользователем Хамик, 19 апр 2014.

  1. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Shegorat, Спасибо! Работает как требуется!
     
  2. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Вопрос ко всем кто пользуется командной строкой!
    В примере
    [Setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={code:GetInstallDir|{pf}\My Application}
    DisableProgramGroupPage=yes
    Uninstallable=not PortableCheck
    OutputDir=.

    [Files]
    Source: "MyProg - installer.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: InstallerCheck;
    Source: "MyProg - portable.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: PortableCheck;

    [Icons]
    Name: "{commondesktop}\My Application"; Filename: "{app}\MyProg - installer.exe"; Check: InstallerCheck;
    Код (Text):

    var
    Portable,Installer: TNewRadioButton;

    function CheckParam(s: string): boolean;
    var
    i: integer;
    begin
    for i := 0 to ParamCount do begin
    Result := ParamStr(i) = s;
    if Result then Break;
    end;
    end;

    function GetInstallDir(S: String): String;
    begin
    if CheckParam('/P') then
    Result:= ExpandConstant('{userdesktop}\My Application Portable')
    else
    Result:= ExpandConstant(S);
    end;

    function PortableCheck: Boolean;
    begin
    Result := Portable.Checked or CheckParam('/P');
    end;

    function InstallerCheck: Boolean;
    begin
    Result := Installer.Checked or CheckParam('/I');
    end;

    procedure InitializeWizard();
    begin
    WizardForm.DirEdit.Text:= ExpandConstant('{code:GetInstallDir|{pf}\My Application}');

    Portable := TNewRadioButton.Create(WizardForm);
    with Portable do
    begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(110);
    Top := ScaleY(175);
    Width := ScaleX(100);
    Height := ScaleY(17);
    Caption := 'Портативная';
    Checked := CheckParam('/P');
    end;

    Installer := TNewRadioButton.Create(WizardForm);
    with Installer do
    begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(0);
    Top := ScaleY(175);
    Width := ScaleX(100);
    Height := ScaleY(17);
    Caption := 'Стационарная';
    Checked := not CheckParam('/P');
    end;
    end;
     
    В том виде в каком он есть, код работает хорошо. Тихая установка, и Тихая распаковка происходит в соответствующие папки.
    Но только когда прикручиваю к основному скрипту, на тихой распаковке выдаёт такую ошибку.
    Что означает данная ошибка?[​IMG]
     

    Вложения:

    Последнее редактирование: 24 авг 2016
  3. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    ZVSRus, это значить что что-то вызывается раньше его создания.
     
    Nemko нравится это.
  4. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Shegorat, в ходе тестов и экспериментов оказалось, что если указать название папки типа такого рода
    Код (Text):
    setup.exe /VERYSILENT /D="D:\Пробная Директория Portable dir"
    , то меняется как-бы кодировка (не знаю как это можно назвать) больших кириллических букв. Получается такое: 9999.png . Но если использовать все маленькие буквы кириллици, то все норм: 888.png . Подскажите, как можно исправить этот баг?
     
    Последнее редактирование: 28 авг 2016
  5. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Хамик, это значить что что-то вызывается раньше его создания.
    Суть ответа не понятна, что вызывается раньше, и раньше чего?.
     
  6. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    ZVSRus, что угодно: функция, процедура, загрузка изображения, условие выполнения, инициализация установщика и т.д.
     
  7. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Хамик, что угодно: функция, процедура, загрузка изображения, условие выполнения, инициализация установщика и т.д.
    Тогда такой вопрос: Куда нужно вставить этот кусок кода?, и после каких функций и процедур стоит у вас.
    PS. С одним разобрался. Было до безобразия просто.
    Checked := CheckParam('/P'); стоя ниже OnClick := @CompClick;
    поставил наоборот все заработало.
    Возник другой вопрос, при тихой распаковке портативная версия распаковывается по своему адрусу {src} но также устанавливается и обычная версия в Program Files но уже без деинстоллятора.
     
    Последнее редактирование: 28 авг 2016
  8. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Что нужно дописать в коде при таких командный файлах:
    "Setup.exe" /VERYSILENT /I /RU
    "Setup.exe" /VERYSILENT /I /EN
    "Setup.exe" /VERYSILENT /P
     
    Последнее редактирование: 2 сен 2016
  9. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Перепробовал все примеры! При тихой распаковке, обычная версия как устанавливалась так и устанавливается. Может кто подскажет, что к чему?
     
  10. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Убрать ключ /I. Делать проверку только на /P
     
  11. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Хамик Убрать ключ /I. Делать проверку только на /P
    С тихой установкой и тихой распаковкой вроде разобрался, также разобрался с не созданием ярлыков.
    Осталось с:
    "Setup.exe" /VERYSILENT /I /RU
    "Setup.exe" /VERYSILENT /I /EN,
    в данной теме ни каких вариантов!
    Решение найдено.
    Последняя загвоздка
    с прописыванием пути "setup.exe" /VERYSILENT /P /D="D:\MyPortable". Пример в данной теме не реагирует на данный путь.
    Может не реагирует потому что в скрипте используется
    (Result:= ExpandConstant('{src}\MyApplicationPortable')
     
    Последнее редактирование: 5 сен 2016
  12. Ветеран

    Регистрация:
    16 мар 2015
    Сообщения:
    89
    Симпатии:
    23
    Пол:
    Мужской
    Что нужно изменить или дописать в данной функции для командного файла на закрепление ярлыка на панели задач для тихой установки. Чекбокс не отмечен

     
  13. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    875
    Симпатии:
    640
    Привет всем у меня такая проблема не знаю как исправить я добавил ключи установки Ru En а на радио батон добавил Ru.Checked := True; в сам Inno setup работает нормально но если делать через батник установку английской версий то и русская тоже устанавливается можно как нибудь исключить через ключ исключить его
    #define MyAppName "VirtualDub"
    #define MyAppVersion "5.0.7.39"
    #define MyAppExeName "Veedub64.exe"

    [Setup]
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    DefaultDirName={code:GetInstallDir|{pf}\{#MyAppName}}
    DefaultGroupName={#MyAppName}
    DirExistsWarning=no
    ArchitecturesAllowed=x86 x64
    ArchitecturesInstallIn64BitMode=x64
    //==============================================================//
    SolidCompression=yes
    Compression=lzma/ultra64
    InternalCompressLevel=Ultra64
    LZMABlockSize=262144
    LZMADictionarySize=65536
    LZMAMatchFinder=BT
    LZMANumFastBytes=273
    MergeDuplicateFiles=yes
    //==============================================================//
    Uninstallable=not PortableCheck
    CreateUninstallRegKey=not PortableCheck

    //==============================================================//
    [Files]
    Source: "InstallFiles\*"; Flags: dontcopy;
    ;Source: "VirtualDub\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check:InstallerCheck;
    ;Source: "VirtualDubPortable\*"; DestDir: "{commondesktop}\VirtualDubPortable"; Flags: ignoreversion recursesubdirs createallsubdirs;Check: PortableCheck;

    Source: C:\Users\Vitaly\Desktop\111\Veedub64eng.exe; DestDir: {app}; Check: InstallerCheck and Eng;
    Source: C:\Users\Vitaly\Desktop\111\Veedub64rus.exe; DestDir: {app}; Check: InstallerCheck and Rus;
    Source: C:\Users\Vitaly\Desktop\111\Veedub64engportable.exe; DestDir: {userdesktop}\VirtualDub Portable; Check: PortableCheck and Eng;
    Source: C:\Users\Vitaly\Desktop\111\Veedub64rusportable.exe; DestDir: {userdesktop}\VirtualDub Portable; Check: PortableCheck and Rus;

    //==============================================================//
    [Icons]
    Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" ; Check:InstallerCheck and GroupIconsCheck;
    Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Check:InstallerCheck and GroupIconsCheck;
    Name: "{commondesktop}\Ярлык(и) на «Рабочем столе"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: {app}; Check:InstallerCheck and DesktopIconsCheck;
    ;Name: "{commondesktop}\Ярлыки в меню «Пуск»"; Filename: "{app}\{#MyAppExeName}"; Check:InstallerCheck and GroupIconsCheck;
    ;Name: "{commondesktop}\Ярлык в панели задач"; Filename: "{app}\{#MyAppExeName}"; Check:InstallerCheck and TaskBarIconsCheck;
    ;Name: "{commondesktop}\Закрепить в меню «Пуск»"; Filename: "{app}\{#MyAppExeName}"; Check:InstallerCheck and StartMenuIconsCheck;


    [code_]
    //==============================================================//
    #include "Modules\botva2.iss"
    //==============================================================//
    var
    ComponentsPage: TWizardPage;
    InstallerAndPortable, Icons,Lang: TNewGroupBox;
    Installer,Portable,En,Ru: TNewRadioButton;
    DesktopIcons,GroupIcons,TaskBarIcons,StartMenuIcons: TNewCheckBox;
    InstallerPanel,PortablePanel: TPanel;
    InstallerImage,PortableImage: Longint;

    //==============================================================//
    function InitializeSetup(): Boolean;
    begin
    if not FileExists(ExpandConstant('{tmp}\b2p.dll')) then ExtractTemporaryFile('b2p.dll');
    if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
    if not FileExists(ExpandConstant('{tmp}\Installer.png')) then ExtractTemporaryFile('Installer.png');
    if not FileExists(ExpandConstant('{tmp}\Portable.png')) then ExtractTemporaryFile('Portable.png');
    Result := True;
    end;
    //==============================================================//
    function CheckParam(s: string): boolean;
    var
    i: integer;
    begin
    for i := 0 to ParamCount do begin
    Result := ParamStr(i) = s;
    if Result then Break;
    end;
    end;
    //==============================================================//
    function GetInstallDir(S: String): String;
    begin
    if CheckParam('/P') then
    Result:= ExpandConstant('{userdesktop}\VirtualDub Portable')
    else
    Result:= ExpandConstant(S);
    end;
    //==============================================================//
    function PortableCheck: Boolean;
    begin
    Result := Portable.Checked or CheckParam('/P');
    end;
    //==============================================================//
    function InstallerCheck: Boolean;
    begin
    Result := Installer.Checked or CheckParam('/I');
    end;
    //==============================================================//
    function DesktopIconsCheck: Boolean;
    begin
    Result:= DesktopIcons.Checked;
    end;
    //==============================================================//
    function GroupIconsCheck: Boolean;
    begin
    Result:= GroupIcons.Checked;
    end;
    //==============================================================//
    function TaskBarIconsCheck: Boolean;
    begin
    Result:= TaskBarIcons.Checked;
    end;
    //==============================================================//
    function StartMenuIconsCheck: Boolean;
    begin
    Result:= StartMenuIcons.Checked;
    end;
    //==============================================================//
    function Eng: Boolean;
    begin
    Result := (En.Checked and not CheckParam('/Ru')) or CheckParam('/En'));
    end;
    //==============================================================//
    function Rus: Boolean;
    begin
    Result := (Ru.Checked and not CheckParam('/En')) or (CheckParam('/Ru'));
    end;
    //==============================================================//

    procedure CopmpClick(Sender: TObject);
    begin
    case TNewRadioButton(Sender) of
    Installer:
    begin
    DesktopIcons.Checked:=True;
    DesktopIcons.Enabled:= DesktopIcons.Checked;
    GroupIcons.Checked:=True;
    GroupIcons.Enabled:= GroupIcons.Checked;
    PortablePanel.Hide;
    TaskBarIcons.Checked:=False;
    TaskBarIcons.Enabled:= True;
    StartMenuIcons.Checked:=False;
    StartMenuIcons.Enabled:= True;
    WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf}')) + '{#MyAppName}';
    end;
    Portable:
    begin
    PortablePanel.Show;
    DesktopIcons.Checked:=False;
    DesktopIcons.Enabled:= DesktopIcons.Checked;
    GroupIcons.Checked:=False;
    GroupIcons.Enabled:= GroupIcons.Checked;
    TaskBarIcons.Checked:=False;
    TaskBarIcons.Enabled:= TaskBarIcons.Checked;
    StartMenuIcons.Checked:=False;
    StartMenuIcons.Enabled:= StartMenuIcons.Checked;
    WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{userdesktop}')) + '{#MyAppName} Portable';
    end;
    end;
    end;
    //==============================================================//
    procedure InitializeWizard();
    begin
    //==============================================================//
    ComponentsPage:= CreateCustomPage(wpWelcome, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');
    //==============================================================//
    InstallerAndPortable:=TNewGroupBox.Create(WizardForm);
    InstallerAndPortable.Parent := ComponentsPage.Surface;
    InstallerAndPortable.Left := ScaleX(10);
    InstallerAndPortable.Top := ScaleY(10);
    InstallerAndPortable.Width := ScaleX(205);
    InstallerAndPortable.Height := ScaleY(62);
    InstallerAndPortable.Caption := 'Пожалуйста, выберите версию:';
    //==============================================================//
    Icons:=TNewGroupBox.Create(WizardForm);
    Icons.Parent := ComponentsPage.Surface;
    Icons.Left := ScaleX(10);
    Icons.Top := ScaleY(70);
    Icons.Width := ScaleX(205);
    Icons.Height := ScaleY(105);
    Icons.Caption := 'Ярлыки:';
    //==============================================================//
    //==============================================================//
    Lang:=TNewGroupBox.Create(WizardForm);
    Lang.Parent := ComponentsPage.Surface;
    Lang.Left := ScaleX(10);
    Lang.Top := ScaleY(175);
    Lang.Width := ScaleX(205);
    Lang.Height := ScaleY(60);
    Lang.Caption := 'Выбор языка программы:';
    //==============================================================//
    InstallerPanel:= TPanel.Create(WizardForm);
    InstallerPanel.Parent := ComponentsPage.Surface;
    InstallerPanel.Left := ScaleX(236);
    InstallerPanel.Top := ScaleY(16);
    InstallerPanel.Width := ScaleX(180);
    InstallerPanel.Height := ScaleY(180);
    InstallerPanel.BevelOuter := bvNone;
    //==============================================================//
    PortablePanel:= TPanel.Create(WizardForm);
    PortablePanel.Parent := ComponentsPage.Surface;
    PortablePanel.Left := ScaleX(236);
    PortablePanel.Top := ScaleY(16);
    PortablePanel.Width := ScaleX(180);
    PortablePanel.Height := ScaleY(180);
    PortablePanel.BevelOuter := bvNone;
    //==============================================================//
    Installer:=TNewRadioButton.Create(WizardForm);
    Installer.Parent :=InstallerAndPortable;
    Installer.Left := ScaleX(8);
    Installer.Top := ScaleY(15);
    Installer.Width := ScaleX(170);
    Installer.Height := ScaleY(17);
    Installer.Caption := 'Установка обычной версий';
    Installer.Checked := not CheckParam('/P');
    Installer.OnClick:=@CopmpClick;
    //==============================================================//
    Portable:=TNewRadioButton.Create(WizardForm);
    Portable.Parent := InstallerAndPortable;
    Portable.Left := ScaleX(8);
    Portable.Top := ScaleY(35);
    Portable.Width := ScaleX(190);
    Portable.Width := ScaleX(190);
    Portable.Caption := 'Установка портативной версии';
    Portable.Checked := CheckParam('/P');
    Portable.OnClick:=@CopmpClick;
    //==============================================================//
    DesktopIcons:=TNewCheckBox.Create(WizardForm);
    DesktopIcons.Parent := Icons;
    DesktopIcons.Left := ScaleX(8);
    DesktopIcons.Top := ScaleY(20);
    DesktopIcons.Width := ScaleX(185);
    DesktopIcons.Height := ScaleY(17);
    DesktopIcons.Caption := 'Ярлык(и) на «Рабочем столе';
    DesktopIcons.Checked:=true;
    //==============================================================//
    GroupIcons:=TNewCheckBox.Create(WizardForm);
    GroupIcons.Parent := Icons;
    GroupIcons.Left := ScaleX(8);
    GroupIcons.Top := ScaleY(40);
    GroupIcons.Width := ScaleX(161);
    GroupIcons.Height := ScaleY(17);
    GroupIcons.Caption := 'Ярлыки в меню «Пуск»';
    GroupIcons.Checked:=true;
    //==============================================================//
    TaskBarIcons:=TNewCheckBox.Create(WizardForm);
    TaskBarIcons.Parent := Icons;
    TaskBarIcons.Left := ScaleX(8);
    TaskBarIcons.Top := ScaleY(60);
    TaskBarIcons.Width := ScaleX(137);
    TaskBarIcons.Height := ScaleY(17);
    TaskBarIcons.Caption := 'Ярлык в панели задач';
    //==============================================================//
    StartMenuIcons:=TNewCheckBox.Create(WizardForm);
    StartMenuIcons.Parent := Icons;
    StartMenuIcons.Left := ScaleX(8);
    StartMenuIcons.Top := ScaleY(80);
    StartMenuIcons.Width := ScaleX(153);
    StartMenuIcons.Height := ScaleY(17);
    StartMenuIcons.Caption := 'Закрепить в меню «Пуск»';
    //==============================================================//
    //==============================================================//
    En:=TNewRadioButton.Create(WizardForm);
    En.Parent :=Lang;
    En.Left := ScaleX(8);
    En.Top := ScaleY(15);
    En.Width := ScaleX(170);
    En.Height := ScaleY(17);
    En.Caption := 'Английская версия программы';
    //==============================================================//
    Ru:=TNewRadioButton.Create(WizardForm);
    Ru.Parent := Lang;
    Ru.Left := ScaleX(8);
    Ru.Top := ScaleY(35);
    Ru.Width := ScaleX(190);
    Ru.Width := ScaleX(190);
    Ru.Caption := 'Русская версия программы';
    Ru.Checked := True;
    //==============================================================//
    InstallerImage:=ImgLoad(InstallerPanel.Handle,ExpandConstant('{tmp}\Installer.png'),ScaleX(0),ScaleY(0),ScaleX(178),ScaleY(178),False,False);
    ImgApplyChanges(InstallerPanel.Handle);
    //==============================================================//
    PortableImage:=ImgLoad(PortablePanel.Handle,ExpandConstant('{tmp}\Portable.png'),ScaleX(0),ScaleY(0),ScaleX(180),ScaleY(180),False,False);
    ImgApplyChanges(PortablePanel.Handle);
    //==============================================================//
    end;
    //=======================================================================================================================================================================//
    //=======================================================================================================================================================================//
    const
    LOAD_LIBRARY_AS_DATAFILE = $2;

    #define A = (Defined UNICODE) ? "W" : "A"

    function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle; external 'LoadLibraryEx{#A}@kernel32.dll stdcall';
    function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Char; nBufferMax: Integer): Integer; external 'LoadString{#A}@user32.dll stdcall';
    function SHGetNewLinkInfo(pszLinkTo, pszDir: String; var pszName: Char; var pfMustCopy: Longint; uFlags: UINT): BOOL; external 'SHGetNewLinkInfo{#A}@shell32.dll stdcall';

    /////////////////////////////////////////////////////////////////////////
    function PinToTaskbar(const szFilename: String; TaskBar, IsPin: Boolean): Boolean;
    //szFilename: full path to executable file
    //TaskBar: False - pin to StartMenu, True - pin to TaskBar
    //IsPin: False - unpin from TaskBar/StartMenu, True - pin to TaskBar/StartMenu
    var
    hInst: THandle;
    buf: array [0..255] of Char;
    i, res: Integer;
    strLnk, strVerb: String;
    objShell, colVerbs: Variant;
    begin
    Result := False;
    if (GetWindowsVersion < $06010000) or not FileExists(szFilename) then Exit;
    if IsPin then
    begin
    if SHGetNewLinkInfo(szFilename, ExpandConstant('{tmp}'), buf[0], res, 0) then
    begin
    while buf[Length(strLnk)] <> #0 do Insert(buf[Length(strLnk)], strLnk, Length(strLnk)+1);
    if FileExists(ExpandConstant('{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\') + ExtractFileName(strLnk)) then Exit;
    end;
    if TaskBar then res := 5386 else res := 5381;
    end else if TaskBar then res := 5387 else res := 5382;
    hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
    if hInst <> 0 then
    try
    for i := 0 to LoadString(hInst, res, buf[0], 255)-1 do Insert(buf, strVerb, i+1);
    try
    objShell := CreateOleObject('Shell.Application');
    colVerbs := objShell.Namespace(ExtractFileDir(szFilename)).ParseName(ExtractFileName(szFilename)).Verbs;
    for i := 1 to colVerbs.Count do if CompareText(colVerbs.Item.Name, strVerb) = 0 then
    begin
    colVerbs.Item.DoIt;
    Result := True;
    Break;
    end;
    except
    Exit;
    end;
    finally
    FreeDLL(hInst);
    end;
    end;
    //=======================================================================================================================================================================//
    procedure TaskbarStartMenu(CurPageID: integer);
    begin
    case CurPageID of
    wpFinished: begin
    if TaskBarIcons.Checked then
    PinToTaskbar(WizardDirValue + '\{#MyAppExeName}', True, True);
    if StartMenuIcons.Checked then
    PinToTaskbar(WizardDirValue + '\{#MyAppExeName}', False, True);
    end;
    end;
    end;
    //=======================================================================================================================================================================//
    procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
    var
    instPath: string;
    begin
    if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppName")}_is1',
    'InstallLocation', instPath) then begin
    case CurUninstallStep of
    usUninstall: begin
    PinToTaskbar(instPath + '\{#MyAppExeName}', True, False);
    PinToTaskbar(instPath + '\{#MyAppExeName}', False, False);
    end;
    end;
    end;
    end;

    //=======================================================================================================================================================================//
    Procedure HideComponents();
    begin
    PortablePanel.Hide;
    InstallerPanel.Hide;
    end;
    //=======================================================================================================================================================================//
    Procedure ShowComponents(CurPageID: Integer);
    begin
    Case CurPageID of
    ComponentsPage.ID:
    begin
    InstallerPanel.Show;
    end;
    end;
    end;
    //=======================================================================================================================================================================//
    function ShouldSkipPage(PageID: Integer): Boolean;
    begin
    if Portable.Checked then
    begin
    if (PageID = 8) then
    Result:= True;
    end;
    end;
    //=======================================================================================================================================================================//
    procedure CurPageChanged(CurPageID: Integer);
    begin
    TaskbarStartMenu(CurPageID);
    HideComponents;
    ShowComponents(CurPageID);
    end;
    //=======================================================================================================================================================================//
    procedure DeinitializeSetup();
    begin
    gdipShutdown;
    end;
    //=======================================================================================================================================================================//

    Ru.Checked := False то все нормально но мне хотелось чтобы по умолчанию он был включен

    Вот примеры батников
    Installer- Eng
    start /wait setup.exe /VERYSILENT /I /En
    Installer- Rus
    start /wait setup.exe /VERYSILENT /I /Ru
    Portable - Eng
    start /wait setup.exe /VERYSILENT /P /En
    Portable - Rus
    start /wait setup.exe /VERYSILENT /P /Ru


    Пример обновил может кому пригодиться за исправления спасибо sergey3695

    sergey3695, Большое спасибо за ответ
    p.s. я подправил сам XD
     
    Последнее редактирование: 5 мар 2018
    Хамик нравится это.

Поделиться этой страницей