Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [53] 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

ZVSRus
04-11-2015, 18:34
Вот весь скрипт

#define MyAppName "Almeza MultiSet Professional"
#define MyAppVersion "1.5"
#define MyAppExeName "MyProg.exe"

[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DirExistsWarning=no
Uninstallable=not PortableCheck
WizardImageFile=1.bmp
WizardSmallImageFile=57x57.bmp
ShowComponentSizes=yes
SetupIconFile=1.ico
OutputBaseFilename=ACDSee5_Setup
;AppSupportPhone=
AppCopyright=Copyright (C) 2003-2015 My Company, Inc.
;AppPublisher=My Company, Inc.
;AppPublisherURL=http://www.example.com/
OutputDir=.
DisableReadyPage=yes


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

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

Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: RusLang and InstallerCheck;
Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: EngLang and InstallerCheck;

Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{commondesktop}\Portable"; Flags: ignoreversion uninsrestartdelete; Check: RusLang and PortableCheck;
Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{commondesktop}\Portable"; Flags: ignoreversion uninsrestartdelete; Check: EngLang and PortableCheck;

Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs; Check: RusLang and InstallerCheck;
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs; Check: RusLang and PortableCheck;


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

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

Filename: "{commondesktop}\Portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: RusLang and PortableCheck;
Filename: "{commondesktop}\Portable\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent; Check: EngLang and PortableCheck;

[UninstallDelete]
Name: {app}\multiset.ini; Type: filesandordirs

[Code]
var
Component: TWizardPage;
Portable,Installer,LangRus,LangEng: TNewRadioButton;
FlagImage,InstallerImage,PortableImage: TBitmapImage;
Lang,IconsLabel: TLabel;
Icons,Startmenu: TNewCheckBox;
InstallerGroupBox,IconsGroupBox,LanguageGroupBox: TNewGroupBox;

dirBrowseForm: TSetupForm;
dirBrowse, dirOK, dirNO, dirback: TButton;
DirTreeView: TFolderTreeView;
Edit: TNewEdit;
BrowseBevel: TBevel;
BrowsePanel: TPanel;
BrowsePanel2: TPanel;
BrowseBevel2,BrowseBevel3: TBevel;
BrowseForm : TSetupForm;


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}\Installer.bmp')) then ExtractTemporaryFile('Installer.bmp');
if not FileExists(ExpandConstant('{tmp}\Portable.bmp')) then ExtractTemporaryFile('Portable.bmp');
Result := True;
end;

function RusLang: Boolean;
begin
Result:= LangRus.Checked;
end;
function EngLang: Boolean;
begin
Result:= LangEng.Checked;
end;

function IconsCheck: Boolean;
begin
Result:= Icons.Checked;
end;
function StartmenuCheck: Boolean;
begin
Result:= Startmenu.Checked;
end;

function InstallerCheck: Boolean;
begin
Result := Installer.Checked;
end;
function PortableCheck: Boolean;
begin
Result := Portable.Checked;
end;

procedure CopmpClick(Sender: TObject);
begin
case TNewRadioButton(Sender) of
Portable:
begin
PortableImage.Show;
Icons.Checked:=False;
Icons.Enabled:= Icons.Checked;
Startmenu.Checked:=False;
Startmenu.Enabled:= Startmenu.Checked;
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + 'Almeza MultiSet Professional Portable';
//wizardform.GroupEdit.enabled:= false;
//wizardform.GroupBrowseButton.enabled:= false;
end;
Installer:
begin
PortableImage.Hide;
Icons.Checked:=True;
Icons.Enabled:= Icons.Checked;
Startmenu.Checked:=True;
Startmenu.Enabled:= Startmenu.Checked;
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf}')) + 'Almeza MultiSet Professional';
//wizardform.GroupEdit.enabled:= true;
//wizardform.GroupBrowseButton.enabled:= true;
end;
end;
end;

procedure LangClick(Sender: TObject);
begin
case TNewRadioButton(Sender) of
LangRus:
begin
FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\rus.bmp'));
FlagImage.Width := ScaleX(110);
FlagImage.Height := ScaleY(70);
FlagImage.Left := ScaleX(250);
end;
LangEng:
begin
FlagImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\eng.bmp'));
FlagImage.Width := ScaleX(110);
FlagImage.Height := ScaleY(70);
FlagImage.Left := ScaleX(250);
end;
end;
end;

procedure dirOkclick(Sender: TObject);
begin
dirBrowseForm.Close;
WizardForm.Enabled:=True;
WizardForm.DirEdit.Text:=Edit.Text;
end;

procedure dirBackClick(Sender: TObject);
begin
Edit.Text:=AddBackslash(ExpandConstant('{pf}\')+'{#MyAppName}');
DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{pf}\')), True);
end;

procedure dirNOclick(Sender: TObject);
begin
dirBrowseForm.Close;
WizardForm.Enabled:=true;
end;

procedure DirFolderChange(Sender: TObject);
Begin
Edit.Text:=AddBackslash(DirTreeView.Directory) + '{#MyAppName}';
if Portable.Checked then
Edit.Text:=AddBackslash(DirTreeView.Directory) + 'Almeza MultiSet Professional Portable';
end;

procedure FormClosedir(Sender: TObject; var Action: TCloseAction);
begin
WizardForm.Enabled:=true;
end;

procedure BrowseClick(Sender: TObject);
begin
dirBrowseForm := CreateCustomForm();
with dirBrowseForm do begin
ClientWidth := ScaleX(352);
ClientHeight := ScaleY(388);
CenterInsideControl(WizardForm, False);
Caption:='Обзор папок';
onClose:=@FormClosedir;

with tlabel.create(dirBrowseForm) do begin
SetBounds(ScaleX(15),ScaleY(15),ScaleX(350),ScaleY(15));
caption:='Выберите папку из списка и нажмите «ОK».';
parent:=dirBrowseForm;
Font.Color:=clBlack;
Font.Size:=8;

BrowseBevel := TBevel.Create(WizardForm);
BrowseBevel.SetBounds(ScaleX(0),ScaleY(40),ScaleX(352),ScaleY(2));
BrowseBevel.parent:=dirBrowseForm;

BrowseBevel3 := TBevel.Create(WizardForm);
BrowseBevel3.SetBounds(ScaleX(0),ScaleY(342),ScaleX(352),ScaleY(2));
BrowseBevel3.parent:=dirBrowseForm;

BrowsePanel := TPanel.Create(WizardForm);
with BrowsePanel do
begin
parent:=dirBrowseForm;
Left := ScaleX(5);
Top := ScaleY(45);
Width := ScaleX(342);
Height := ScaleY(292);
Caption := '';
end;
BrowsePanel2 := TPanel.Create(WizardForm);
with BrowsePanel2 do
begin
BrowsePanel2.Parent := BrowsePanel;
Left := ScaleX(5);
Top := ScaleY(5);
Width := ScaleX(332);
Height := ScaleY(282);
BevelOuter := bvLowered;
Caption := '';
end;
BrowseBevel2 := TBevel.Create(WizardForm);
with BrowseBevel2 do
begin
BrowseBevel2.Parent := BrowsePanel2;
Left := ScaleX(5);
Top := ScaleY(5);
Width := ScaleX(322);
Height := ScaleY(272);
Style := bsRaised;
end;

Edit:= TNewEdit.Create(dirBrowseForm);
with edit do begin
SetBounds(ScaleX(10),ScaleY(10),ScaleX(311),ScaleY(21));
Text:=WizardForm.DirEdit.text;
Parent:= BrowsePanel2;
Font.Color:=clBlack;
end;

DirTreeView:= TFolderTreeView.Create(dirBrowseForm)
with DirTreeView do begin
SetBounds(ScaleX(10),ScaleY(35),ScaleX(311),ScaleY(235));
OnChange:=@DirFolderChange;
Parent:=BrowsePanel2;
end;

dirback:=tbutton.create(dirBrowseForm)
with dirback do begin
SetBounds(ScaleX(16),ScaleY(351),ScaleX(100),ScaleY(30));
parent:=dirBrowseForm;
Caption:='Сброс';
onclick:=@dirBackClick;
end;

dirok:=tbutton.create(dirBrowseForm)
with dirok do begin
SetBounds(ScaleX(126),ScaleY(351),ScaleX(100),ScaleY(30));
parent:=dirBrowseForm;
Caption:='OK';
onclick:=@dirOKclick;
end;

dirno:=tbutton.create(dirBrowseForm)
with dirno do begin
SetBounds(ScaleX(236),ScaleY(351),ScaleX(100),ScaleY(30));
parent:=dirBrowseForm;
Caption:='Отмена';
onclick:=@dirNOclick;
end;
end;
end;
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.dirEdit.Text), true);
Edit.Text:=(DirTreeView.Directory);
dirBrowseForm.Show;
WizardForm.Enabled:=false;
end;

procedure InitializeWizard();
begin
WizardForm.DirBrowseButton.Visible:=false;
Component := CreateCustomPage(wpInfoBefore, 'Выбор типа и компонентов установки', '...');

FlagImage := TBitmapImage.Create(WizardForm);
with FlagImage do
begin
Name := 'FlagImage';
Parent := Component.Surface;
Left := ScaleX(250);
Top := ScaleY(167);
Width := ScaleX(110);
Height := ScaleY(70);
end;

InstallerImage := TBitmapImage.Create(WizardForm);
with InstallerImage do
begin
Name := 'InstallerImage';
Parent := Component.Surface;
Left := ScaleX(220);
Top := ScaleY(5);
Width := ScaleX(189);
Height := ScaleY(160);
InstallerImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Installer.bmp'));
end;

PortableImage := TBitmapImage.Create(WizardForm);
with PortableImage do
begin
Name := 'PortableImage';
Parent := Component.Surface;
Left := ScaleX(220);
Top := ScaleY(5);
Width := ScaleX(186);
Height := ScaleY(160);
PortableImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Portable.bmp'));
end;

InstallerGroupBox := TNewGroupBox.Create(WizardForm);
with InstallerGroupBox do
begin
Parent := Component.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(205);
Height := ScaleY(74);
Caption := 'Тип:';
end;

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

IconsGroupBox := TNewGroupBox.Create(WizardForm);
with IconsGroupBox do
begin
Parent := Component.Surface;
Left := ScaleX(0);
Top := ScaleY(80);
Width := ScaleX(205);
Height := ScaleY(74);
Caption := 'Компоненты:';
end;

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

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

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

LanguageGroupBox := TNewGroupBox.Create(WizardForm);
with LanguageGroupBox do
begin
Parent := Component.Surface;
Left := ScaleX(0);
Top := ScaleY(160);
Width := ScaleX(205);
Height := ScaleY(74);
Caption := 'Язык интерфейса:';
end;;

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

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

dirBrowse:=tbutton.create(WizardForm);
with dirBrowse do begin
Parent := WizardForm.SelectDirPage;
SetBounds(ScaleX(342),ScaleY(80),ScaleX(75),ScaleY(23));
Caption:='Обзор...';
OnClick:=@BrowseClick;
end;
end;

function ShouldSkipPage(PageID: Integer): Boolean; // Должен пропустить страницу
begin
if Portable.Checked then
if (PageID = 8) then
Result:= True;
end;

procedure CurStepChanged(CurStep: TSetupStep); // Измененный шаг
begin
if (CurStep = ssPostInstall) then
if Installer.Checked and RusLang then
SetIniString('general', 'language', 'russian', ExpandConstant('{app}\multiset.ini'));
if Installer.Checked and EngLang then
SetIniString('general', 'language', 'english', ExpandConstant('{app}\multiset.ini'));
end;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure CurPageChanged(CurPageID: Integer); // Измененная страница
begin
case CurPageID of
wpSelectDir:
if Portable.Checked then
begin
WizardForm.PageNameLabel.Caption:='Выбор папки распаковки';
WizardForm.PageDescriptionLabel.Caption:='В какую папку вы хотите распаковать {#SetupSetting("AppName")}?';
WizardForm.SelectDirLabel.Caption:='Программа распакует {#SetupSetting("AppName")} в следующую папку.';
WizardForm.SelectDirBrowseLabel.Caption:='Нажмите «Распаковать» чтобы начать распаковку. Если вы хотите выбрать другую папку, нажмите «Обзор».';
WizardForm.NextButton.Caption:='Распаковать';
WizardForm.Caption:= 'Распаковка — {#SetupSetting("AppName")}'
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{src}')) + 'Almeza MultiSet Professional Portable';
end else begin
WizardForm.NextButton.Caption:= 'Далее';
WizardForm.PageNameLabel.Caption:= 'Выбор папки установки';
WizardForm.Caption:= 'Установка — {#SetupSetting("AppName")}';
WizardForm.PageDescriptionLabel.Caption:= 'В какую папку вы хотите установить {#SetupSetting("AppName")}?';
WizardForm.SelectDirLabel.Caption:= 'Программа установит {#SetupSetting("AppName")} в следующую папку.';
WizardForm.DirEdit.Text := AddBackslash(ExpandConstant('{pf}')) + '{#SetupSetting("AppName")}';
WizardForm.SelectDirBrowseLabel.Caption:='Нажмите «Далее» чтобы продолжить. Если вы хотите выбрать другую папку, нажмите «Обзор».';
end;
//wpInstalling:
//begin
//WizardForm.PageNameLabel.Caption:='Распаковка';
//WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional Portable распакуется на ваш компьютер.';
//end else begin
//WizardForm.PageNameLabel.Caption:='Установка';
//WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional установится на ваш компьютер.';
//end;
//end;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
wpSelectProgramGroup:
if Installer.Checked then
begin
WizardForm.NextButton.Caption:= 'Установить';
WizardForm.SelectStartMenuFolderBrowseLabel.Caption:= 'Нажмите «Установить», чтобы начать установку. Если вы хотите выбрать другую папку, нажмите «Обзор».';
end;
wpInstalling:
if Installer.Checked then
begin
WizardForm.PageNameLabel.Caption:='Установка';
WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional установится на ваш компьютер.';
end else begin
WizardForm.PageNameLabel.Caption:='Распаковка';
WizardForm.PageDescriptionLabel.Caption:='Пожалуйста, подождите, пока Almeza MultiSet Professional Portable распакуется на ваш компьютер.';
end;
end;
end;

Dodakaedr
04-11-2015, 19:08
Есть код возвращения исходного пути установки и распаковки, не могу найти где ошибка.
Помогите исправить. »
Если в условии выполняется несколько команд то надо брать в begin ... end;
procedure dirBackClick(Sender: TObject);
begin
if Portable.Checked then begin
Edit.Text:=(ExpandConstant('{src}\')+'ACDSeePortable');
DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{src}\')), True) end else begin
Edit.Text:=AddBackslash(ExpandConstant('{pf}\')+'{#MyAppName}');
DirTreeView.ChangeDirectory(AddBackslash(ExpandConstant('{pf}\')), True);
end;
end;

ZVSRus
04-11-2015, 20:00
Большое спасибо помогло!

R.i.m.s.k.y.
05-11-2015, 10:30
подскажите, пожалуйста, какие параметры в инно [setup] отвечают за цифровую подпись установщика?
когда-то помнил но вот подзабыл

Nordek
05-11-2015, 10:50
R.i.m.s.k.y., Справка » Секция скриптов » Директивы секции [Setup] » SignTool

Также: "Справка » Вкладка "Указатель"
В окне под "Введите ключевое слово для поиска:", введите: signature

vadjliss
07-11-2015, 11:50
ребята помогите с дополнительным по убираю галочку а по всё равно устанавливается

#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
AppId={{04DDCE42-843E-4F36-81F7-2B5D2702C034}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

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

[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\WW-W\Desktop\Freemake Video Converter\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: soft\MicrosoftVisualC.exe; DestDir: "{tmp}"

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Types]
Name: "polnaya"; Description: "Полная установка"
Name: "viborochnaya"; Description: "Выборочная установка"; Flags: iscustom

[Components]
Name: "MicrosoftVisualC"; Description: "Microsoft Visual C++"; Types: polnaya viborochnaya

[Run]
FileName: "{tmp}\MicrosoftVisualC.exe"; StatusMsg: "Выполнение программы Microsoft Visual C++"; Flags: skipifsilent hidewizard

Nordek
07-11-2015, 12:06
убираю галочку а по всё равно устанавливается »Не увидел чтоб вы задействовали компонент.

Отметил красным жирным шрифтом:[Components]
Name: "MicrosoftVisualC"; Description: "Microsoft Visual C++"; Types: polnaya viborochnaya

[Run]
FileName: "{tmp}\MicrosoftVisualC.exe"; StatusMsg: "Выполнение программы Microsoft Visual C++"; Flags: skipifsilent hidewizard; Components: MicrosoftVisualC

vadjliss
07-11-2015, 12:27
Nordek
Спасибо

МИШАНЧИК
07-11-2015, 13:51
Подскажите пожалуйста.
Создавал инсталятор с уменьшенными размерами формы(картинка 460х200).
Кусок скрипта:
with WizardForm do
begin
DirBrowseButton.Left:= ScaleX(360); //Местоположение кнопки "Обзор" от левого края, на странице выбора пути установки
DirBrowseButton.Top:= ScaleY(90); //Местоположение кнопки "Обзор" сверху, на странице выбора пути установки
DirEdit.Left:= DirEdit.Left + ScaleX(147); //Местоположение панели, где отображается путь от левого края, на странице выбора пути установки
DirEdit.Top:= ScaleY(90); //Местоположение панели, где отображается путь сверху, на странице выбора пути установки
DirEdit.Width:=ScaleX(205);
При изменении размера шрифта в windows(средний 125%) вся форма нормальная, но кнопка обзор не на месте. При обычном отображении(мелкий 100%) все на месте. Как правильно задать координаты в форме чтоб при любом изменении размеров шрифта все компоненты формы были на своих местах?

ZVSRus
08-11-2015, 12:50
Dodakaedr
Есть страница SelectDirPage на которой отображены компоненты со страницы SelectProgramGroupPage т.е. GroupEdit, GroupBrowseButton и т.д. Как сделать чтобы при выборе InstallerRadioButton страница отображалась как есть, а при выборе PortableRadioButton компоненты относящиеся к SelectProgramGroupPage не отображались.

Сам скрипт
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D0030108704000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 36F6D706F6E656E74506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D436F6D706F6E656E745061676 50D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6 F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C69636974486569676 87403ED00000010544E65774E6F7465626F6F6B506167650D436F6D706F6E656E74506167650743617074696F6E142400000 0D092D18BD0B1D0BED18020D182D0B8D0BFD0B020D183D181D0B0D0BDD0BED0B2D0BAD0B80B4465736372697074696F6E142 A000000D092D18BD0B1D0B5D180D0B8D182D0B520D182D0B8D0BF20D183D181D182D0B0D0BDD0BED0B2D0BAD0B80C5072657 6696F757350616765070B57656C636F6D6550616765084E65787450616765070B4C6963656E736550616765000C544E65774 7726F7570426F7811496E7374616C6C657247726F7570426F78044C656674020003546F70020005576964746803CD0006486 56967687402460743617074696F6E1419000000D0A2D0B8D0BF20D183D181D182D0B0D0BDD0BED0B2D0BAD0B8085461624F7 26465720200000F544E6577526164696F427574746F6E09496E7374616C6C6572044C656674020A03546F700210055769647 46803BE000648656967687402110743617074696F6E142E000000D0A3D181D182D0B0D0BDD0BED0B2D0BAD0B020D0BED0B1D 18BD187D0BDD0BED0B920D0B2D0B5D180D181D0B8D0B807436865636B656409085461624F726465720200074F6E436C69636 B070E496E7374616C6C6572436C69636B00000F544E6577526164696F427574746F6E08506F727461626C65044C656674020 A03546F70022B05576964746803BE000648656967687402110743617074696F6E1438000000D0A0D0B0D181D0BFD0B0D0BAD 0BED0B2D0BAD0B020D0BFD0BED180D182D0B0D182D0B8D0B2D0BDD0BED0B920D0B2D0B5D180D181D0B8D0B8085461624F726 465720201074F6E436C69636B070D506F727461626C65436C69636B0000000000000000448656967687403ED000000F11054 4E65774E6F7465626F6F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E457870 6C6963697448656967687403ED00000010544E65774E6F7465626F6F6B506167650D436F6D706F6E656E7450616765074361 7074696F6E1426000000D092D18BD0B1D0BED18020D182D0B8D0BFD0B020D183D181D182D0B0D0BDD0BED0B2D0BAD0B80B44 65736372697074696F6E142A000000D092D18BD0B1D0B5D180D0B8D182D0B520D182D0B8D0BF20D183D181D182D0B0D0BDD0 BED0B2D0BAD0B80C50726576696F757350616765070B57656C636F6D6550616765084E65787450616765070B4C6963656E73 6550616765000C544E657747726F7570426F7811496E7374616C6C657247726F7570426F78044C656674020003546F700200 05576964746803CD000648656967687402460743617074696F6E1419000000D0A2D0B8D0BF20D183D181D182D0B0D0BDD0BE D0B2D0BAD0B8085461624F726465720200000F544E6577526164696F427574746F6E09496E7374616C6C6572044C65667402 0A03546F70021005576964746803BE000648656967687402110743617074696F6E142E000000D0A3D181D182D0B0D0BDD0BE D0B2D0BAD0B020D0BED0B1D18BD187D0BDD0BED0B920D0B2D0B5D180D181D0B8D0B807436865636B656409085461624F7264 657202000754616253746F7009074F6E436C69636B070E496E7374616C6C6572436C69636B00000F544E6577526164696F42 7574746F6E08506F727461626C65044C656674020A03546F70022B05576964746803BE000648656967687402110743617074 696F6E1438000000D0A0D0B0D181D0BFD0B0D0BAD0BED0B2D0BAD0B020D0BFD0BED180D182D0B0D182D0B8D0B2D0BDD0BED0 B920D0B2D0B5D180D181D0B8D0B8085461624F726465720201074F6E436C69636B070D506F727461626C65436C69636B0000 000000000000

[Code]
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
var
ComponentPage: TWizardPage;
InstallerGroupBox: TNewGroupBox;
Installer: TNewRadioButton;
Portable: TNewRadioButton;

procedure InstallerClick(Sender: TObject); forward;
procedure PortableClick(Sender: TObject); forward;

procedure RedesignWizardForm;
begin
{ Creates custom wizard page }
ComponentPage := CreateCustomPage(wpWelcome, 'Выбор типа установки', 'Выберите тип установки');

{ InstallerGroupBox }
InstallerGroupBox := TNewGroupBox.Create(WizardForm);
with InstallerGroupBox do
begin
Parent := ComponentPage.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(205);
Height := ScaleY(70);
Caption := 'Тип установки';
end;

{ Installer }
Installer := TNewRadioButton.Create(WizardForm);
with Installer do
begin
Parent := InstallerGroupBox;
Left := ScaleX(10);
Top := ScaleY(16);
Width := ScaleX(190);
Height := ScaleY(17);
Caption := 'Установка обычной версии';
Checked := True;
OnClick := @InstallerClick;
end;

{ Portable }
Portable := TNewRadioButton.Create(WizardForm);
with Portable do
begin
Parent := InstallerGroupBox;
Left := ScaleX(10);
Top := ScaleY(43);
Width := ScaleX(190);
Height := ScaleY(17);
Caption := 'Распаковка портативной версии';
OnClick := @PortableClick;
end;

Installer.TabOrder := 0;
Portable.TabOrder := 1;

InstallerGroupBox.TabOrder := 0;

{ ReservationBegin }
// Вы можете добавить ваш код здесь.

{ ReservationEnd }
end;


procedure PortableClick(Sender: TObject);
begin

end;

procedure InstallerClick(Sender: TObject);
begin

end;

////////////////////////////////////////////////////////////////////////////////
var //
StartMenuIcon,DesktopIcon: TCheckBox; //
//
function MakeDesktopIcon: Boolean; begin Result:=DesktopIcon.Checked; end; //
function MakeStartMenuIcon: Boolean; begin Result:=StartMenuIcon.Checked;end; //
//
procedure NoStartMenuIcon(Sender: TObject); //
begin //
if StartMenuIcon.Checked = true then //
begin //
wizardform.GroupEdit.enabled:= false; //
wizardform.GroupBrowseButton.enabled:= false; //
end else begin //
wizardform.GroupEdit.enabled:= true; //
wizardform.GroupBrowseButton.enabled:= true; //
end; //
end; //
////////////////////////////////////////////////////////////////////////////////

procedure InitializeWizard();
begin
RedesignWizardForm;
WizardForm.DiskSpaceLabel.Hide;
//////////////////////////////////////////////////////////////////////////////////////////////
begin //
//
wizardform.SelectDirBrowseLabel.top:= wizardform.GroupEdit.top - ScaleY(48); //
wizardform.SelectDirLabel.left:= wizardform.GroupEdit.left + ScaleY(40); //
//
wizardform.GroupEdit.parent:= wizardform.SelectDirPage; //
wizardform.GroupEdit.top:= wizardform.GroupEdit.top + ScaleY(71); //
//
wizardform.GroupBrowseButton.parent:= wizardform.SelectDirPage; //
wizardform.GroupBrowseButton.top:= wizardform.GroupBrowseButton.top + ScaleY(70); //
//
wizardform.DirEdit.top:= wizardform.GroupEdit.top - ScaleY(90); //
wizardform.DirBrowseButton.top:= wizardform.GroupEdit.top - ScaleY(92); //
//
wizardform.SelectGroupBitmapImage.parent:= wizardform.SelectDirPage; //
wizardform.SelectGroupBitmapImage.left:= wizardform.GroupEdit.left + ScaleY (0); //
wizardform.SelectGroupBitmapImage.top:= wizardform.GroupEdit.top - ScaleY(64); //
//
wizardform.SelectStartMenuFolderLabel.parent:= wizardform.SelectDirPage; //
wizardform.SelectStartMenuFolderLabel.left:= wizardform.GroupEdit.left + ScaleY (40); //
wizardform.SelectStartMenuFolderLabel.top:= wizardform.GroupEdit.top - ScaleY(56); //
//
wizardform.SelectStartMenuFolderBrowseLabel.parent:= wizardform.SelectDirPage; //
wizardform.SelectStartMenuFolderBrowseLabel.left:= wizardform.GroupEdit.left + ScaleY (0); //
wizardform.SelectStartMenuFolderBrowseLabel.top:= wizardform.GroupEdit.top - ScaleY(30); //
//////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////
DesktopIcon := TCheckBox.Create(WizardForm); //
DesktopIcon.Parent := WizardForm.SelectDirPage; //
DesktopIcon.Caption := 'Добавить ярлык на Рабочий стол'; //
DesktopIcon.SetBounds(ScaleX(0),WizardForm.DirEdit.Top+ScaleY(140),ScaleX(300),ScaleY(25)); //
DesktopIcon.TabOrder := 0; //
DesktopIcon.Checked:= true; //
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
StartMenuIcon := TCheckBox.Create(WizardForm); //
StartMenuIcon.Parent := WizardForm.SelectDirPage; //
StartMenuIcon.Caption := 'Не создавать папку в меню Пуск'; //
StartMenuIcon.SetBounds(ScaleX(220),WizardForm.DirEdit.Top+ScaleY(140),ScaleX(300),ScaleY(25)); //
StartMenuIcon.TabOrder := 0; //
StartMenuIcon.Checked:= false; //
StartMenuIcon.OnClick:= @NoStartMenuIcon; //
end; //
//////////////////////////////////////////////////////////////////////////////////////////////////
end;

Dodakaedr
08-11-2015, 13:01
при выборе PortableRadioButton компоненты относящиеся к SelectProgramGroupPage не отображались. »
Добавьте это procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectDir:
begin
if Portable.Checked then
begin
WizardForm.GroupEdit.Hide;
WizardForm.GroupBrowseButton.Hide;
StartMenuIcon.Hide;
wizardform.SelectGroupBitmapImage.Hide;
wizardform.SelectStartMenuFolderLabel.Hide;
wizardform.SelectStartMenuFolderBrowseLabel.Hide;
//DesktopIcon.Checked := False;
//DesktopIcon.Hide;
end else begin
WizardForm.GroupEdit.Show;
WizardForm.GroupBrowseButton.Show;
StartMenuIcon.Show;
wizardform.SelectGroupBitmapImage.Show;
wizardform.SelectStartMenuFolderLabel.Show;
wizardform.SelectStartMenuFolderBrowseLabel.Show;
//DesktopIcon.Checked := True;
//DesktopIcon.Show;
end;
end;
end;
end;

ZVSRus
08-11-2015, 13:42
Dodakaedr, Большое спасибо!

vadjliss
08-11-2015, 19:39
ребята подскажите как сделать что бы инсталлятор запускался от администратора

Nordek
08-11-2015, 20:32
vadjliss, Справка » Секция скриптов » Директивы секции [Setup] » PrivilegesRequired (http://www.jrsoftware.org/ishelp/index.php?topic=setup_privilegesrequired)

[Setup]: PrivilegesRequired
[hr]Возможные значения: none, poweruser, admin или lowest

Значение по умолчанию: admin

Описание:
Эффект данной директивы зависит от версии Windows, на котором работает инсталлятор:

На Windows Vista и позднее:
Эта директива определяет, требуются ли повышенные права (через диалоговое окно Управления учетной записью пользователя) для выполнения установки.

При значении admin (значение по умолчанию) или poweruser, инсталлятор всегда будет работать с административными полномочиями. Если инсталлятор был запущен непривилегированным пользователем, Windows спросит пароль к учётной записи, у которой есть административные полномочия и инсталлятор тогда будет работать в соответствии с этой учётной записью.

При значении lowest, инсталлятор не будет запрашивать административных полномочий для выполнения, даже если он был запущен пользователем группы "Администраторы". Дополнительно, корневой ключ удаления всегда будет HKEY_CURRENT_USER и "общие" формы констант папки Shell отображаться на форме "пользователи", даже если административные полномочия доступны. Не используйте это значение, если Вы не уверены, что Ваш инсталлятор будет работать успешно на непривилегированных учетных записях.

На ранних версиях Windows:
Эта директива определяет минимальные пользовательские полномочия, требуемые для выполнения инсталлятора.

При значении admin (по умолчанию), инсталлятор выполнится, если пользователь будет членом группы "Администраторы", иначе выведет на экран следующее сообщение и закончит свою работу: "Вы должны быть зарегистрированы как администратор, чтобы установить эту программу."

При значении poweruser, инсталлятор будет работать, если пользователь является членом группы "Администраторы" или Продвинутых пользователей, иначе выведет на экран следующее сообщение и закончит свою работу: "Вы должны быть зарегистрированы как администратор или как член группы Продвинутых пользователей, чтобы установить эту программу."

При значении lowest инсталлятор не будет проверять состав группы пользователя. Дополнительно, корневой ключ удаления всегда будет HKEY_CURRENT_USER и "общие" формы констант папки Shell отображаться на форме "пользователи", даже если административные полномочия доступны. Не используйте это значение, если Вы не уверены, что Ваш инсталлятор будет работать успешно на непривилегированных учётных записях.

Примечание:
Независимо от версии Windows, only if the installation is per-user (PrivilegesRequired=lowest) you may touch Windows' per-user areas from your script.

МИШАНЧИК
10-11-2015, 08:29
Подскажите пожалуйста.
Можно как-то сделать чтоб при установке в WelcomeLabel дописывалась разрядность устанавливаемого приложения(если есть файлы NOT IsWin64 и IsWin64)?
И чтоб потом в "Установка и удаление программ" в названии программы тоже стояла разрядность?

МИШАНЧИК
10-11-2015, 16:35
kotyarko@fb, спасибо.

IsWin64 - это не файлы. »

Я имел ввиду что имеются файлы предназначенные для разной разрядности и которые будут копироваться в зависимости от флага NOT IsWin64 или IsWin64.

kotyarko@fb, как-то у меня не очень коректно работает:
1. Не отрабатывает "AppName"-пишет просто "Вас приветствует мастер установки х32.
2. В установка и удаление в имени программы отсутствует х64(х86).
3. В таком виде как Вы дали при запуске в виндовс х64 и х86 пишет "Вас приветствует мастер установки х32".
4. У меня свой WelcomeLabel1 указанный в [CustomMessages] и он с ним не срабатывает, только со стандартным.
Подскажите пожалуйста как исправить, или может есть другой вариант как задать данный параметр?

kotyarko@fb
10-11-2015, 17:21
МИШАНЧИК, я неправильно понял ваше сообщение, и привёл нерабочий пример (не было возможности проверить). Когда понял - удалил своё сообщение, но, видимо, вы его ещё застали.

У меня свой WelcomeLabel1 указанный в [CustomMessages] »
Пример сделан с секцией [Messages], но такой способ подойдёт и для [CustomMessages]:
[Messages]
BeveledLabel=Архитектура ЦП: ({#GetEnv("PROCESSOR_ARCHITECTURE")})

Для изменения имени приложения в "установке и удалении программ" нужно изменять параметр AppVerName, секции [Setup].

Dodakaedr
10-11-2015, 22:04
Можно как-то сделать чтоб при установке в WelcomeLabel дописывалась разрядность устанавливаемого приложения »
Можно, исправляйте под свои нужды[setup]
appname=App
appversion=1.1
UninstallDisplayName={code:GetUnName}
DefaultDirName={sd}\Apps

[CustomMessages]
Welcx32=Установка {#SetupSetting("AppName")} x32
Welcx64=Установка {#SetupSetting("AppName")} x64
UnName32=Удалить {#SetupSetting("AppName")} x32
UnName64=Удалить {#SetupSetting("AppName")} x64

[Code]
function GetUnName(uname: string): string;
begin
if IsWin64 then uname := CustomMessage('UnName64') else uname := CustomMessage('UnName32');
Result := uname;
end;

procedure InitializeWizard();
begin
if IsWin64 then
begin
WizardForm.WelcomeLabel1.Caption := CustomMessage('welcx64');
WizardForm.Caption := WizardForm.WelcomeLabel1.Caption;
end
else
begin
WizardForm.WelcomeLabel1.Caption := CustomMessage('welcx32');
WizardForm.Caption := WizardForm.WelcomeLabel1.Caption;
end;
end;

МИШАНЧИК
11-11-2015, 10:27
Dodakaedr, спасибо.
Все хорошо, только теперь еще Welcx... прописывается в SetupWindowTitle, вместо моего SetupWindowTitle указанного в [Messages]. Т.е. если в [CustomMessages] Welcx... задать значение: "Будет установлена программа х", то эта же надпись будет и в самом верху инсталятора в SetupWindowTitle, а не только в WelcomeLabel1. Можно как-то избавиться от этого в SetupWindowTitle?

Dodakaedr
11-11-2015, 10:31
МИШАНЧИК, удалите строку WizardForm.Caption := WizardForm.WelcomeLabel1.Caption;




© OSzone.net 2001-2012