Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: tuz1979
Дата сообщения: 25.12.2013 01:17
TheMultiLamer
спасибо большое за помощь!
Автор: Tima182
Дата сообщения: 26.12.2013 10:35
Привет, с наступающим НГ. Помогите, нужно что бы галочка на создание ярлыка всегда стояла?
[more]; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Minecraft"
#define MyAppVersion "1.5.2"
#define MyAppExeName "Minecraft Launcher.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{7E37B090-9518-46A0-B7E8-B49E2099C4AB}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName={userappdata}\.minecraft
DefaultGroupName=Minecraft 1.5.2
AllowNoIcons=true
OutputDir=C:\Users\Тима\Desktop
OutputBaseFilename=Minecraft 1.5.2
Compression=lzma/ultra
SolidCompression=true
InternalCompressLevel=ultra
PrivilegesRequired=none

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: C:\Users\Тима\AppData\Roaming\.minecraft\Minecraft Launcher.exe; DestDir: {app}; Flags: ignoreversion
Source: C:\Users\Тима\AppData\Roaming\.minecraft\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\Minecraft 1.5.2; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon; Languages:

[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifsilent
[/more]
Автор: vint56
Дата сообщения: 26.12.2013 11:55
Tima182
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons};
Автор: Tima182
Дата сообщения: 26.12.2013 14:51
vint56
Спасибо, а как сделать что бы Галка стояла не убирая ее?
Автор: vint56
Дата сообщения: 26.12.2013 16:04
Tima182
[more][Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Files]
Source: C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons};

[Icons]
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; Components: desktopicon

[Components]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; Types: full; Flags: fixed

[Code]
var
dopl: TLabel;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 7) then
Result:= True;
end;

procedure InitializeWizard();
begin
WizardForm.TypesCombo.Hide;
WizardForm.TasksList.Hide;

dopl := TLabel.Create(WizardForm);
with dopl do
begin
Parent := WizardForm.SelectTasksPage;
Caption := 'Дополнительные значки:';
Left := ScaleX(0);
Top := ScaleY(40);
Width := ScaleX(150);
Height := ScaleY(13);
end;
with WizardForm.ComponentsList do
begin
BorderStyle := bsNone;
Color := clMenu;
WantTabs := True;
Parent := WizardForm.SelectTasksPage;
Left := ScaleX(5);
Top := ScaleY(60);
end;
end;[/more]
Автор: WestusBox
Дата сообщения: 26.12.2013 16:47
Здравствуйте. В Inno Script Studio можно быстро сделать инсталлятор с чекбоксами для выбора устанавливаемых компонентов. Но я не могу разобраться как сделать древовидный список с чекбоксами.
Как получается:
http://content.screencast.com/users/Westus/folders/Snagit/media/2d979dd5-b7e9-43f2-a7d5-d899d59e5f70/12.26.2013-16.45.png
Как я хочу сделать:
http://content.screencast.com/users/Westus/folders/Snagit/media/9bc383af-005a-4f34-a7d0-5829437afd0e/12.26.2013-16.33.png
Автор: vint56
Дата сообщения: 26.12.2013 17:47
WestusBox
[more]
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
ShowTasksTreeLines=yes

[Components]
Name: "g0"; Description: "Joves Mod Pack"; Types: full custom compact;
Name: "g0\c01"; Description: "1. Удобные прицелы:"; Types: full custom compact;
Name: "g0\c01\c0101"; Description: "Как у Джова."; Flags: exclusive
Name: "g0\c01\c0102"; Description: "Минималистичный."; Flags: exclusive
Name: "g0\c01\c01333333"; Description: "Футуристичный (ждите обновления модпака)"; Flags: exclusive
Name: "g0\c01\c0106"; Description: "Прицел а-ля Battlefield."; Types: full custom compact;
Name: "g0\c15"; Description: "2. УГН (углы горизонтальной наводки):"; Types: full custom compact;
Name: "g0\c15\c1501"; Description: "Уголком."; Flags: exclusive
Name: "g0\c15\c1502"; Description: "Полукругом."; Flags: exclusive
Name: "g0\c02"; Description: "3. Удаление черноты в снайперском режиме."; Types: full custom compact;
Name: "g0\c12"; Description: "4. Информационная панель выбранной цели:"; Types: full custom compact;
Name: "g0\c12\c1201"; Description: "Простая."; Flags: exclusive
Name: "g0\c12\c1202"; Description: "Цветная."; Flags: exclusive
Name: "g0\c03"; Description: "5. Панель повреждений:"; Types: full custom compact;
Name: "g0\c03\c0301"; Description: "Как у Джова."; Flags: exclusive
Name: "g0\c03\c0302"; Description: "Боевой интерфейс от игрока zayaz."; Flags: exclusive
Name: "g0\c07"; Description: "6. Время перезарядки в боевом чате."; Types: full custom compact;
Name: "g0\c04"; Description: "7. Звоночек крита."; Types: full custom compact;
Name: "g0\c06"; Description: "8. Отдаление камеры:"; Types: full custom compact;
Name: "g0\c06\c0603"; Description: "Отключение дрожания динамической камеры."; Flags: exclusive
Name: "g0\c06\c0601"; Description: "NoScroll - колёсико не переключает в снайп. режим."; Flags: exclusive
Name: "g0\c08"; Description: "9. Изменение внешнего вида:"; Types: full custom compact;
Name: "g0\c08\c0801"; Description: "Отключение камуфляжей и надписей."; Flags: exclusive
Name: "g0\c08\c0802"; Description: "Шкурки с зонами пробития (не все танки)."; Flags: exclusive
Name: "g0\c08\c0804"; Description: "Яркие Ж/Д платформы на картах."; Flags: exclusive
Name: "g0\c09"; Description: "10. Увеличение дальности видимости."; Types: full custom compact;
Name: "g0\c33"; Description: "11. Улучшения в ангаре:"; Types: full custom compact;
Name: "g0\c33\c3307"; Description: "Статистика игровой сессии."; Flags: exclusive
Name: "g0\c33\c3302"; Description: "Вертикальное дерево развития."; Flags: exclusive
Name: "g0\c33\c3303546"; Description: "Список танков в два ряда (ждите обновления модпака)"; Flags: exclusive
Name: "g0\c33\c3304"; Description: "Отображение уровня боёв во взводе (из XVM)."; Flags: exclusive
Name: "g0\c33\c3309"; Description: "Пинг в ангаре (возможны лаги!)."; Flags: exclusive
Name: "g0\c33\c3305"; Description: "Подробные описания умений и навыков."; ExtraDiskSpaceRequired: "1394180"; Flags: exclusive
Name: "g0\c05"; Description: "12. Комплексный мод XVM:"; Types: full custom compact;
Name: "g0\c05\c0505"; Description: "Альтернативные маркеры техники."; Types: full custom compact;
Name: "g0\c05\c0501"; Description: "Мини-карта с сонаром - отслеживание врагов:"; Types: full custom compact;
Name: "g0\c05\c0501\c050101"; Description: "Круг макс. обзора (445 м)."; Flags: exclusive
Name: "g0\c05\c0501\c050102"; Description: "Направление камеры (указка)."; Flags: exclusive
Name: "g0\c05\c0501\c050103"; Description: "Подписи к танкам."; Types: full custom compact;
Name: "g0\c05\c0501\c050103\c05010301"; Description: "Расположение танков, пропавших из засвета."; Flags: exclusive
Name: "g0\c05\c0501\c050105"; Description: "Квадрат отрисовки (1 км)."; Types: full custom compact;
Name: "g0\c05\c0501\c050106"; Description: "«Звездочки» - маркер засвета в ушах команды противника."; Types: full custom compact;
Name: "g0\c05\c0502"; Description: "Лог личного урона:"; Flags: exclusive
Name: "g0\c05\c0502\c050201"; Description: "Простой."; Flags: exclusive
Name: "g0\c05\c0502\c050202"; Description: "Детальный."; Flags: exclusive
Name: "g0\c05\c0503"; Description: "Красный стоп-сигнал «Шестое чувство»."; Types: full custom compact;
Name: "g0\c05\c0504"; Description: "Озвучка «Шестого чувства»."; Types: full custom compact;
Name: "g0\c20"; Description: "13. WoT Tweaker Plus - программа для поднятия FPS."; Types: full custom compact;

[code]
procedure InitializeWizard();
begin
WizardForm.TypesCombo.Hide;
with WizardForm.ComponentsList do
begin
Top := ScaleY(50);
Height := ScaleY(165);
end;
end;[/more]
Автор: Habib2302
Дата сообщения: 26.12.2013 22:01
Доброе время суток.Возможно ли указать 2 компонента в командной строке?
Автор: WestusBox
Дата сообщения: 27.12.2013 16:32
vint56, большое спасибо.
Возник вопрос, а как переименовать папку если она существует?
Как должно работать:
Если "Папка" существует, то переименовать в "Папка 1", если "Папка 1" тоже существует, то переименовать в "Папка 2" и т.д.
Автор: MOD_TEC
Дата сообщения: 27.12.2013 17:29
Как кнопке назначить функцию перехода на определенную страницу...
Заранее спасибо...
Автор: WestusBox
Дата сообщения: 27.12.2013 18:26
[more]
Цитата:
Возник вопрос, а как переименовать папку если она существует?
Как должно работать:
Если "Папка" существует, то переименовать в "Папка 1", если "Папка 1" тоже существует, то переименовать в "Папка 2" и т.д.

Нашел то-что подходит, но в этом скрипте проверяются файлы, а нужно целиком всю папку.
[more][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
Compression=lzma
SolidCompression=yes
Uninstallable=no

[Tasks]
Name: arc; Description: "Create backup"

[Files]
Source: Files\*.*; DestDir: {app}; BeforeInstall: CreateBackup

[Code]
var
Page: TInputDirWizardPage;
ArcDir: String;

procedure CreateBackup();
var
SrcFile, DestFile: string;
begin
if IsTaskSelected('arc') then
begin
// if Not DirExists(ArcDir) then CreateDir(ArcDir);
ForceDirectories(ArcDir); // исправлено
SrcFile:= AddBackslash(ExpandConstant('{app}')) + ExtractFileName(CurrentFileName);
DestFile:= AddBackslash(ArcDir) + ExtractFileName(CurrentFileName);
FileCopy(SrcFile, DestFile, False);
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
If (CurPageID = Page.ID) then
ArcDir := Page.Values[0];
Result:= True;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
If (PageID = Page.ID) and
(Not IsTaskSelected('arc')) then
Result:= True
else Result:= False;
end;

procedure InitializeWizard();
begin
Page:= CreateInputDirPage(wpSelectTasks, 'Select Backup Location',
'Where should backup files be stored?',
'To continue, click Next.' + #10#13#10#13 +
'If you would like to select a different folder, click Browse.',
False, 'Backup');
Page.Add('');
//Page.Values[0] := ExpandConstant('{sd}\Backup');
Page.Values[0] := AddBackslash(ExpandConstant('{sd}\Backup')) +
GetDateTimeString('yyyy/mm/dd hh:nn', '_', '.' ); // исправлено
end;[/more] [/more]

Добавлено:

Цитата:
Возник вопрос, а как переименовать папку если она существует?
Как должно работать:
Если "Папка" существует, то переименовать в "Папка 1", если "Папка 1" тоже существует, то переименовать в "Папка 2" и т.д.

Нашел то-что подходит, но в этом скрипте проверяются файлы, а нужно целиком всю папку. Ссылка на код выше.
Как правильно вставить код в more?
Автор: WestusBox
Дата сообщения: 28.12.2013 00:30
Еле нашел. Чуть допилил и получилось то, что я хотел.

Код:
//Если папка с игрой уже существует, переименовываем
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall: begin
RenameFile(ExpandConstant('{app}'), ExpandConstant('{app}-')+GetDateTimeString('yyyy/mm/dd hh:nn', '_', '.' ));
end;
end;
end;
Автор: R3Pa4eK
Дата сообщения: 29.12.2013 12:55
ExecAndWait на ассемблере (плагин для инно), самый маленький, наверное

http://rghost.ru/51280253
Автор: tuz1979
Дата сообщения: 29.12.2013 23:00
Люди подскажите пожалуйста как вставить анимацию в формате gif?
Автор: R3Pa4eK
Дата сообщения: 29.12.2013 23:03
tuz1979
http://rghost.ru/5030700 - Inno GIFCtrl v2.1.
Автор: tuz1979
Дата сообщения: 29.12.2013 23:34
R3Pa4eK
Спасибо большое
Автор: sjwrec
Дата сообщения: 01.01.2014 08:46
С новым 2014 годом!!!
Автор: BlackInferno1989
Дата сообщения: 01.01.2014 11:05
Решил сделать Slideshow под ProgressBar`ом в пределах окна инсталлятора. Нашел кучу скриптов. Но при добавлении их в свой скрипт у меня возникают те или иные ошибки, а все из-за того что эти скрипты были выдраны из различных готовых скриптов + я некудышный программист.
Не могли бы Вы, умные люди с ГОРАЗДО прямыми руками, а не то как у меня, написать, как, что, куда прописывать. Скрипт мне подойдет любой (по времени или по процентам). И если можно напишите скрипт только с необходимым содержимым, без всякого мусора и не нужных секций. Буду очень признателен.

Заранее спасибо.
Автор: AlekseyPopovv
Дата сообщения: 01.01.2014 16:48
Всем привет. Всех с новым годом Возможно ли сделать на Inno Setup портативную версию приложения, как на NSIS? Именно сделать, а не добавить в инсталятор уже готовую портативку. То есть имеется папка "Starus File Recovery Portable", в ней папка "App", в папке "App" папка "Starus File Recovery"(в этой папке находятся файлы приложения). Всё остальное нужно прописать в скрипте, например: необходимо что бы создавалась папка "Data" в папке "Starus File Recovery Portable". В этой папке будут храниться настройки приложения: "Settings.ini" и записи реестра "Starus File Recovery.reg". Примерно как то так. Возможно ли такое и как?
Автор: OPERATOR555
Дата сообщения: 02.01.2014 06:15
Как можно сделать, дабы после инсталяции, при повторной попытке запуска инсталятора запускался деинсталятор?
Автор: AlekseyPopovv
Дата сообщения: 02.01.2014 10:12
[Setup]
; Меняй на любое своё
AppId=OPERATOR555

[Code]
// Всё что по русски, можеш по другому написать, всё остальное без изменений
function UninstallMyApp(): Boolean;
var
Buff: String;
i: Integer;
begin
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
if not Result then Result := not FileExists(RemoveQuotes(Buff));
if not Result then if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', mbError, MB_YESNO) = IDYES then
try
Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
finally
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
if not Result then MsgBox('Удаление завершилось неудачей!', mbError, MB_OK);
end;
end;

function InitializeSetup(): Boolean;
begin
Result := UninstallMyApp();
end;

Добавлено:
Ребята помогите. Как сделать, что бы при выборе языка, менялась картинка? Например: Русский язык-флаг русский и т.д.
Автор: AlekseyPopovv
Дата сообщения: 03.01.2014 13:50
А как зашифровать инсталятор? Пробовал так:
[Setup]
;Модуль ISCrypt.dll должен быть в папке с компилятором
Encryption=yes
;Пароль сами устанавливаем такой, чтобы никто его не смог подобрать, желательно добавить русские символы и сделать пароль подлиннее
Password=xcvcxhv9-8--fhрлджэ\5(*&Y&&^^()U###$%!^&!^%#^(UJ<:LKJJHGG

[Code]
procedure InitializeWizard();
var
//Определяем поле ввода пароля
PasswordEdit: TPasswordEdit;
begin
//Указываем наш пароль
WizardForm.PasswordEdit.Text := 'xcvcxhv9-8--fhрлджэ\5(*&Y&&^^()U###$%!^&!^%#^(UJ<:LKJJHGG';
end;

//При установке юзер не поймает пароль по маске, который может быть расшифрован специальными утилитами.
//Их у меня нет, но о них я слышал, хотя Inno Setup не позволяет копировать пароль по маске
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpPassword then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;
скрипт собирается, но после запуска инсталятора "прекращена работа". Как справить?

Добавлено:
Сделал вот так:
[Setup]
Encryption=Yes
Password=7T34Ue(rrT

[Files]
Source: "MyProg.exe"; DestDir: "{app}"

[Code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpPassword then Result:= True;
end;
А как защитить сам скрипт? Он хоть и не извлекается, но зато открыть его можно и посмотреть введя любой код.
Автор: vint56
Дата сообщения: 03.01.2014 15:41
AlekseyPopovvAlekseyPopovv 12:12 02-01-2014
Цитата:
Ребята помогите. Как сделать, что бы при выборе языка, менялась картинка? Например: Русский язык-флаг русский и т.д.

[more=Пример]
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppExeName "MyProg.exe"

[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: rus.bmp; Flags: dontcopy solidbreak
Source: eng.bmp; Flags: dontcopy solidbreak
Source: ukr.bmp; Flags: dontcopy solidbreak

;Source: rus.txt; DestDir:{app}; Check: Lang1 and install;
;Source: eng.txt; DestDir:{app}; Check: Lang2 and install;
;Source: ukr.txt; DestDir:{app}; Check: Lang3 and install;

;Source: rus.txt; DestDir:{tmp}\portable; Check: Lang1 and portab;
;Source: eng.txt; DestDir:{tmp}\portable; Check: Lang2 and portab;
;Source: ukr.txt; DestDir:{tmp}\portable; Check: Lang3 and portab;

Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Lang1 and install;
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Lang2 and install;
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: Lang3 and install;

Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{localappdata}\portable"; Flags: ignoreversion uninsrestartdelete; Check: Lang1 and portab;
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{localappdata}\portable"; Flags: ignoreversion uninsrestartdelete; Check: Lang2 and portab;
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{localappdata}\portable"; Flags: ignoreversion uninsrestartdelete; Check: Lang3 and portab;

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" ; Check: Comp2;
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Check: Comp2;
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: Comp1;

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: Lang1 and install;
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: Lang2 and install;
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: Lang3 and install;

Filename: "{localappdata}\portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: Lang1 and portab;
Filename: "{localappdata}\portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: Lang2 and portab;
Filename: "{localappdata}\portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: Lang3 and portab;

[Code]
var
Component: TWizardPage;
portable,installer,LangRus,LangEng,LangUkr: TNewRadioButton;
FlagImage: TBitmapImage;
Lang,Copmp: TLabel;
CompPanel: TPanel;
Icons,PuskIcons: TNewCheckBox;

function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\rus.bmp')) then ExtractTemporaryFile('rus.bmp');
if not FileExists(ExpandConstant('{tmp}\eng.bmp')) then ExtractTemporaryFile('eng.bmp');
if not FileExists(ExpandConstant('{tmp}\ukr.bmp')) then ExtractTemporaryFile('ukr.bmp');
Result := True;
end;

function Lang1: Boolean;
begin
Result:= LangRus.Checked;
end;

function Lang2: Boolean;
begin
Result:= LangEng.Checked;
end;

function Lang3: Boolean;
begin
Result:= LangUkr.Checked;
end;

function Comp1: Boolean;
begin
Result:= Icons.Checked;
end;

function Comp2: Boolean;
begin
Result:= PuskIcons.Checked;
end;

function install: Boolean;
begin
Result := installer.Checked;
end;

function portab: Boolean;
begin
Result := portable.Checked;
end;

procedure CopmpClick(Sender: TObject);
begin
case TNewRadioButton(Sender) of
portable:
begin
Icons.Checked:=False;
Icons.Enabled:= Icons.Checked;
PuskIcons.Checked:=False;
PuskIcons.Enabled:= PuskIcons.Checked;
end;
installer:
begin
Icons.Checked:=True;
Icons.Enabled:= Icons.Checked;
PuskIcons.Checked:=True;
PuskIcons.Enabled:= PuskIcons.Checked;
end;
end;
end;

procedure LangClick(Sender: TObject);
begin
case TNewRadioButton(Sender) of
LangRus:
begin
FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\rus.bmp'));
FlagImage.Left := ScaleX(232);
end;
LangEng:
begin
FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\eng.bmp'));
FlagImage.Left := ScaleX(262);
end;
LangUkr:
begin
FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\ukr.bmp'));
FlagImage.Left := ScaleX(282);
end;
end;
end;


procedure InitializeWizard();
begin
Component := CreateCustomPage(wpSelectDir, 'Выбор компонентов', 'Какие компоненты должны быть установлены?');

FlagImage := TBitmapImage.Create(WizardForm);
with FlagImage do
begin
Name := 'FlagImage';
Parent := Component.Surface;
Left := ScaleX(232);
Top := ScaleY(120);
Width := ScaleX(100);
Height := ScaleY(75);
end;

CompPanel := TPanel.Create(WizardForm);
with CompPanel do
begin
Parent := Component.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(417);
Height := ScaleY(100);
BevelOuter := bvNone;
end;

Copmp := TLabel.Create(WizardForm);
with Copmp do
begin
Parent := CompPanel;
Caption := 'Тип и компоненты:';
Left := ScaleX(0);
Top := ScaleY(5);
Width := ScaleX(150);
Height := ScaleY(13);
end;

portable := TNewRadioButton.Create(WizardForm);
with portable do
begin
Parent := CompPanel;
Left := ScaleX(5);
Top := ScaleY(25);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Распаковка портативной версий';
OnClick:=@CopmpClick;
end;

Icons := TNewCheckBox.Create(WizardForm);
with Icons do
begin
Parent := CompPanel;
Left := ScaleX(25);
Top := ScaleY(65);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Ярлык(и) на «Рабочем столе»';
Checked:=True;
end;

PuskIcons := TNewCheckBox.Create(WizardForm);
with PuskIcons do
begin
Parent := CompPanel;
Left := ScaleX(25);
Top := ScaleY(85);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Ярлык в «Пуск меню»';
Checked:=True;
end;

installer := TNewRadioButton.Create(WizardForm);
with installer do
begin
Parent := CompPanel;
Left := ScaleX(5);
Top := ScaleY(45);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Установка обычной версий';
OnClick:=@CopmpClick;
Checked:=True;
end;

Lang := TLabel.Create(WizardForm);
with Lang do
begin
Parent := Component.Surface;
Caption := 'Язык интерфейса:';
Left := ScaleX(0);
Top := ScaleY(120);
Width := ScaleX(150);
Height := ScaleY(13);
end;

LangRus := TNewRadioButton.Create(WizardForm);
with LangRus do
begin
Parent := Component.Surface;
Left := ScaleX(5);
Top := ScaleY(135);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Язык интерфейса Русский';
OnClick:=@LangClick;
Checked:=True;
end;

LangEng := TNewRadioButton.Create(WizardForm);
with LangEng do
begin
Parent := Component.Surface;
Left := ScaleX(5);
Top := ScaleY(155);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Язык интерфейса Английский';
OnClick:=@LangClick;
end;

LangUkr := TNewRadioButton.Create(WizardForm);
with LangUkr do
begin
Parent := Component.Surface;
Left := ScaleX(5);
Top := ScaleY(175);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Язык интерфейса Украйнский';
OnClick:=@LangClick;
end;
end;[/more]
Автор: sjwrec
Дата сообщения: 04.01.2014 08:05
Всем привет,

есть строка текста 4095.0 MB

есть кусок кода но ругается на mismatch

SymRErr:= ExpandConstant('{%2e}');
if (Copy(currNode1.text, vidlenstr, 1) = SymRErr or ' ') then begin

Как заставить инсталл искать точку в тексте?

Пробел правильно находит.
Автор: sjwrec
Дата сообщения: 04.01.2014 10:11
Отбой. Нашёл решение. Оказывается точка находится просто процедура проверки неправильно написана:
Вот как надо было

Код:
SymRErr:= ExpandConstant('{%2e}');
SymRErr2:= ' ';
if (Copy(currNode1.text, vidlenstr, 1) = SymRErr) or (Copy(currNode1.text, vidlenstr, 1) = SymRErr2) then begin
Автор: AlekseyPopovv
Дата сообщения: 04.01.2014 13:15
vint56
А как теперь прикрутить картинку флешки рядом с флагом (при выборе портативной установки) в зависимости от выбора языка (что бы была и флешка и флаг), а при установки был только флаг?
Автор: vint56
Дата сообщения: 04.01.2014 13:32
AlekseyPopovv
http://rghost.ru/51393458
Автор: AlekseyPopovv
Дата сообщения: 04.01.2014 13:37
vint56
Спасибо!


Добавлено:
vint56
Как записать в секцию INI через Code например:
FileName: "{app}\multiset.ini"; Section: "general"; Key: "language"; string: "russian.ini"; Check: RusLang and InstallerCheck
FileName: "{app}\multiset.ini"; Section: "general"; Key: "language"; string: "english.ini"; Check: EngLang and InstallerCheck
FileName: "{app}\multiset.ini"; Section: "general"; Key: "language"; string: "ukrainian.ini"; Check: UkrLang and InstallerCheck
FileName: "{app}\multiset.ini"; Section: "general"; Key: "quickintro"; string: "0"; Check: InstallerCheck
FileName: "{app}\multiset.ini"; Section: "general"; Key: "maxmainwindow"; string: "0"; Check: InstallerCheck
FileName: "{app}\App\Almeza MultiSet Professional\multiset.ini"; Section: "general"; Key: "language"; string: "russian.ini"; Check: RusLang and PortableCheck
FileName: "{app}\App\Almeza MultiSet Professional\multiset.ini"; Section: "general"; Key: "language"; string: "english.ini"; Check: EngLang and PortableCheck
FileName: "{app}\App\Almeza MultiSet Professional\multiset.ini"; Section: "general"; Key: "language"; string: "ukrainian.ini"; Check: UkrLang and PortableCheck
FileName: "{app}\App\Almeza MultiSet Professional\multiset.ini"; Section: "general"; Key: "quickintro"; string: "0"; Check: PortableCheck
FileName: "{app}\App\Almeza MultiSet Professional\multiset.ini"; Section: "general"; Key: "maxmainwindow"; string: "0"; Check: PortableCheck
Автор: R3Pa4eK
Дата сообщения: 04.01.2014 19:01
AlekseyPopovv
есть функция:
function SetIniString(const Section, Key, Value, Filename: String): Boolean;


Код:
[no][code][/no]
SetIniString('gereral', 'language', 'russian', ExpandConstant('{app}\multiset.ini'));
Автор: AlekseyPopovv
Дата сообщения: 04.01.2014 20:09
R3Pa4eK
Это я понял, а как сделать что бы эта ветка записывалась, когда выбрана обычная установка и Русский язык?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

Предыдущая тема: Только инсталлятор


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.