Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
kotyarko@fb
24-01-2016, 15:12
vadjliss, SaveStringToFile(ExpandConstant('{sys}\drivers\etc\hosts'), #13#10 + '127.0.0.1 www.example.com', True);
vadjliss
24-01-2016, 19:20
всё разобрался
а, если мне надо больше прописать сайтов то как
SaveStringToFile(ExpandConstant('{sys}\drivers\etc\hosts'), #13#10 + '127.0.0.1 www.example.com', True);
vadjliss, извиняюсь, не увидел 127 страницу.
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
HostFile: TStringList;
begin
If CurStep = ssDone then
begin
ShellExec('open', 'http://forum.oszone.net//', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
HostFile := TStringList.Create;
try
with HostFile do
if CurStep = ssPostInstall then
begin
LoadFromFile(ExpandConstant('{sys}\drivers\etc\hosts'));
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 xxx');
Add('127.0.0.1 xxx');
Add('127.0.0.1 xxx');
SaveToFile(ExpandConstant('{sys}\drivers\etc\hosts'));
end;
finally
HostFile.free;
end;
end;
habib2302
26-01-2016, 13:57
доброе время суток. как организовать автоматическое скрытие группы задачь?
http://savepic.ru/8443697.png (http://savepic.ru/8439601.png)
как организовать автоматическое скрытие группы задачь? »
Выбираете WIzardForm Desinger.
В левой колонке переключаетесь на SelectComponentsPage.
На странице SelectComponentsPage выбираете элемент ComponentsList.
В правой колонке находите TreeViewStyle.
В TreeViewStyle меняете значение вместо False, на True.
В конечном итоге получите код:
[Code]
procedure InitializeWizard();
begin
with WizardForm.ComponentsList do
begin
TreeViewStyle := True;
end;
end;
Чтоб компоненты были скрытыми изначально, в секции [Components], к компоненту добавьте флаг collapsed т.е:
[Components]
Name: a; Description: A; Flags: collapsed
Aneshoharilian
30-01-2016, 18:18
[Setup]
DisableReadyPage=yes
[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectProgramGroup then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
else
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
end;
Как сделать чтобы название кнопки изменилось ?
Нужно сменить название кнопки "Next" на "Install"
Dodakaedr
30-01-2016, 19:21
Как сделать чтобы название кнопки изменилось ? »
Напишите сами.
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
if CurPageID = wpSelectProgramGroup then
WizardForm.NextButton.Caption := 'Install';
end;
Aneshoharilian
30-01-2016, 19:46
Напишите сами. »
Пробовал ваш код,ничего не изменилось
Dodakaedr
30-01-2016, 20:02
Пробовал ваш код,ничего не изменилось »
Да неужели???#define MyAppName "My Program"
#define MyAppVersion "1.5"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableReadyPage=yes
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
[icons]
Name: "{userdesktop}\bla-bla"; Filename: "{app}\bla-bla.exe";
[code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectProgramGroup then
WizardForm.NextButton.Caption := 'Install';
end;
http://i74.fastpic.ru/big/2016/0130/13/efa9af8f14b53f94ee58815d1f7f8913.jpg
Aneshoharilian
30-01-2016, 20:13
Да неужели??? »
http://i.stack.imgur.com/ZYHQC.png
;Inno Setup 5.5.8 Unicode
#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={{795448DE-FE12-4DD9-BD5B-A573E2345282}
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
DisableReadyPage=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.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
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectProgramGroup then
WizardForm.NextButton.Caption := 'Install';
end;
Inno Setup 5.5.8 Unicode не берет...
Dodakaedr
30-01-2016, 20:35
Aneshoharilian, в изначальном вашем огризке было wpSelectProgramGroup а на скрине вы показываете страницу wpSelectDir, перейдите на следующую страницу и будет вам счастье или замените страницу в коде (с wpSelectProgramGroup на wpSelectDir) и отключите SelectProgramGroupPage, потому что она идет следующей....
Aneshoharilian
30-01-2016, 21:08
wpSelectDir »
[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
if (CurPageID = wpSelectDir) or (CurPageID = wpReady) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
else if (CurPageID = wpFinished) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish)
else
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
end;
Доработанный код на основе ваших рекомендации =)
------------------------------------------------------------------------------
более правильный вариант,дает сбой с капчой
procedure CurPageChanged(CurPageID: Integer);
begin
// On fresh install the last pre-install page is "Select Program Group".
// On upgrade the last pre-install page is "Read to Install"
// (forced even with DisableReadyPage)
if (CurPageID = wpSelectProgramGroup) or (CurPageID = wpReady) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
// On the Finished page, use "Finish" caption.
else if (CurPageID = wpFinished) then
WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish)
// On all other pages, use "Next" caption.
else
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
end;
Dodakaedr
30-01-2016, 21:26
Доработанный код на основе ваших рекомендации »
тогда внимательней их смотрите #define MyAppName "My Program"
#define MyAppVersion "1.5"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableReadyPage=yes
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
[icons]
Name: "{userdesktop}\bla-bla"; Filename: "{app}\bla-bla.exe";
[code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectProgramGroup then
WizardForm.NextButton.Caption := 'Install';
end;
Aneshoharilian
31-01-2016, 12:22
http://postimg.org/image/thshevhsz/
Как исправить ?
http://postimg.org/image/thshevhsz/
kotyarko@fb
31-01-2016, 12:56
Aneshoharilian, перед else не ставится ";".
Как в данном скрипте прикрутить кнопку "Сброс" к PortableCheck,
чтобы был правильный путь и сброс.
#define Name "Test"
[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;
[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}
[CustomMessages]
russian.RestoreButton=Сброс
[_Code]
var
ISCustomPage1: TWizardPage;
Installer: TNewRadioButton;
Portable: TNewRadioButton;
procedure RedesignWizardForm;
begin
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
{ Installer }
Installer := TNewRadioButton.Create(WizardForm);
with Installer do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(16);
Top := ScaleY(32);
Width := ScaleX(113);
Height := ScaleY(17);
Caption := 'Установка';
Checked := True
end;
{ Portable }
Portable := TNewRadioButton.Create(WizardForm);
with Portable do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(16);
Top := ScaleY(72);
Width := ScaleX(113);
Height := ScaleY(17);
Caption := 'Распаковка';
end;
Installer.TabOrder := 0;
Portable.TabOrder := 1;
end;
#define A = (Defined UNICODE) ? "W" : "A"
const
DRIVE_CDROM = 5;
var
BrowseForm: TSetupForm;
BrowseForm2: TSetupForm;
DirTreeView: TFolderTreeView;
DirFolderTreeView: TStartMenuFolderTreeView;
EditTreeView: TNewEdit;
EditFolderTreeView: TNewEdit;
DB_Button: TNewButton;
GB_Button: TNewButton;
OldEvent_NoIconsCheckClick: TNotifyEvent;
OKButton, ButtonNewFolder: TButton;
function GetDriveType(nDrive: string): Longint; external 'GetDriveType{#A}@kernel32.dll stdcall';
function CDROM(Drive: String): Boolean;
begin
Result:= GetDriveType(Drive) = 5;
end;
procedure GetDrive(Sender: TObject);
var
Path, Path1: String;
begin
Path:= ExtractFileDrive(DirTreeView.Directory);
Path1:= ExtractFileDrive(EditTreeView.Text);
ButtonNewFolder.Enabled:= not CDROM(Path);
OKButton.Enabled:= not CDROM(Path1);
if CDROM(Path1) then MsgBox('Установка на выбранный диск невозможна!', mbError, MB_OK);
end;
procedure DirTreeViewChange(Sender: TObject);
begin
if DirTreeView.Directory <> WizardForm.DirEdit.Text then begin
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
GetDrive(nil);
end else
EditTreeView.Text := DirTreeView.Directory;
end;
procedure DirFolderTreeViewChange(Sender: TObject);
begin
if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;
procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
1: begin
EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));
GetDrive(nil);
end;
2: begin
DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
end;
3: if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text;
end;
end;
procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));
5: begin
DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
end;
6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
end;
end;
procedure BrowseDirTreeViewClick(Sender: TObject);
begin
BrowseForm := CreateCustomForm();
with BrowseForm do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm;
Font.Size := 8;
end;
DirTreeView := TFolderTreeView.Create(nil)
with DirTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
OnChange := @DirTreeViewChange;
Parent := BrowseForm;
end;
EditTreeView := TNewEdit.Create(nil);
with EditTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirTreeView.Directory;
Parent := BrowseForm;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 1;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
ButtonNewFolder:= TButton.Create(nil)
with ButtonNewFolder do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 2;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
OKButton:= TButton.Create(nil);
with OKButton do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonOK);
Tag := 3;
OnClick := @BrowseFormButtonsTreeViewOnClick;
ModalResult := mrOk;
end;
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
BrowseForm2 := CreateCustomForm();
with BrowseForm2 do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm2;
Font.Size := 8;
end;
DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
with DirFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userst artup}'),ExpandConstant('{commonstartup}'));
OnChange := @DirFolderTreeViewChange;
Parent := BrowseForm2;
end;
EditFolderTreeView := TNewEdit.Create(nil);
with EditFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirFolderTreeView.Directory;
Parent := BrowseForm2;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 4;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 5;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonOK);
Tag := 6;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
ModalResult := mrOk;
end;
DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure NoIconsCheckClick(Sender: TObject);
begin
OldEvent_NoIconsCheckClick(Sender);
GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;
WizardForm.DirBrowseButton.Hide;
DB_Button := TNewButton.create(WizardForm);
with DB_Button do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirTreeViewClick;
end;
WizardForm.GroupBrowseButton.Hide;
GB_Button := TNewButton.create(WizardForm);
with GB_Button do
begin
Parent := WizardForm.SelectProgramGroupPage;
SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirFolderTreeViewClick;
end;
end;
[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010C403000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 953437573746F6D50616765310D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D4953437573746F6D506167653 10D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6 F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C69636974486569676 87403ED000000F110544E65774E6F7465626F6F6B506167651653656C65637450726F6772616D47726F7570506167650D457 8706C69636974576964746803A1010E4578706C6963697448656967687403ED00000010544E65774E6F7465626F6F6B50616 7650D4953437573746F6D50616765310743617074696F6E06154953437573746F6D50616765315F43617074696F6E0B44657 36372697074696F6E06194953437573746F6D50616765315F4465736372697074696F6E0C50726576696F757350616765070 B57656C636F6D6550616765084E65787450616765070B4C6963656E736550616765000F544E6577526164696F427574746F6 E09496E7374616C6C6572044C656674021003546F70022005576964746802710648656967687402110743617074696F6E120 900000023044104420430043D043E0432043A043004085461624F72646572020000000F544E6577526164696F427574746F6 E08506F727461626C65044C656674021003546F70024805576964746802710648656967687402110743617074696F6E120A0 000002004300441043F0430043A043E0432043A043004085461624F72646572020100000000000000
Как в данном скрипте прикрутить кнопку "Сброс" к PortableCheck »
Так, что ли?
#define Name "Test"
[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;
[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}
[CustomMessages]
russian.RestoreButton=Сброс
[Code]
var
ISCustomPage1: TWizardPage;
Installer: TNewRadioButton;
Portable: TNewRadioButton;
procedure RedesignWizardForm;
begin
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
{ Installer }
Installer := TNewRadioButton.Create(WizardForm);
with Installer do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(16);
Top := ScaleY(32);
Width := ScaleX(113);
Height := ScaleY(17);
Caption := 'Установка';
Checked := True
end;
{ Portable }
Portable := TNewRadioButton.Create(WizardForm);
with Portable do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(16);
Top := ScaleY(72);
Width := ScaleX(113);
Height := ScaleY(17);
Caption := 'Распаковка';
end;
Installer.TabOrder := 0;
Portable.TabOrder := 1;
end;
#define A = (Defined UNICODE) ? "W" : "A"
const
DRIVE_CDROM = 5;
var
BrowseForm: TSetupForm;
BrowseForm2: TSetupForm;
DirTreeView: TFolderTreeView;
DirFolderTreeView: TStartMenuFolderTreeView;
EditTreeView: TNewEdit;
EditFolderTreeView: TNewEdit;
DB_Button: TNewButton;
GB_Button: TNewButton;
OldEvent_NoIconsCheckClick: TNotifyEvent;
OKButton, ButtonNewFolder: TButton;
function GetDriveType(nDrive: string): Longint; external 'GetDriveType{#A}@kernel32.dll stdcall';
function CDROM(Drive: String): Boolean;
begin
Result:= GetDriveType(Drive) = 5;
end;
procedure GetDrive(Sender: TObject);
var
Path, Path1: String;
begin
Path:= ExtractFileDrive(DirTreeView.Directory);
Path1:= ExtractFileDrive(EditTreeView.Text);
ButtonNewFolder.Enabled:= not CDROM(Path);
OKButton.Enabled:= not CDROM(Path1);
if CDROM(Path1) then MsgBox('Установка на выбранный диск невозможна!', mbError, MB_OK);
end;
procedure DirTreeViewChange(Sender: TObject);
begin
if DirTreeView.Directory <> WizardForm.DirEdit.Text then begin
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
GetDrive(nil);
end else
EditTreeView.Text := DirTreeView.Directory;
end;
procedure DirFolderTreeViewChange(Sender: TObject);
begin
if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;
procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
1: begin
////////////////////////////////////////////////////////////////////
if Portable.Checked then
EditTreeView.Text := ( AddBackslash(ExpandConstant('{#SetupSetting("DefaultDirName")}')) + 'Portable' )
else EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));
/////////////////////////////////////////////////////////////////////
// EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));
GetDrive(nil);
end;
2: begin
DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
end;
3: if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text;
end;
end;
procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));
5: begin
DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
end;
6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
end;
end;
procedure BrowseDirTreeViewClick(Sender: TObject);
begin
BrowseForm := CreateCustomForm();
with BrowseForm do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm;
Font.Size := 8;
end;
DirTreeView := TFolderTreeView.Create(nil)
with DirTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
OnChange := @DirTreeViewChange;
Parent := BrowseForm;
end;
EditTreeView := TNewEdit.Create(nil);
with EditTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirTreeView.Directory;
Parent := BrowseForm;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 1;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
ButtonNewFolder:= TButton.Create(nil)
with ButtonNewFolder do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 2;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
OKButton:= TButton.Create(nil);
with OKButton do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonOK);
Tag := 3;
OnClick := @BrowseFormButtonsTreeViewOnClick;
ModalResult := mrOk;
end;
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
BrowseForm2 := CreateCustomForm();
with BrowseForm2 do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm2;
Font.Size := 8;
end;
DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
with DirFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userst artup}'),ExpandConstant('{commonstartup}'));
OnChange := @DirFolderTreeViewChange;
Parent := BrowseForm2;
end;
EditFolderTreeView := TNewEdit.Create(nil);
with EditFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirFolderTreeView.Directory;
Parent := BrowseForm2;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 4;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 5;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonOK);
Tag := 6;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
ModalResult := mrOk;
end;
DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure NoIconsCheckClick(Sender: TObject);
begin
OldEvent_NoIconsCheckClick(Sender);
GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;
WizardForm.DirBrowseButton.Hide;
DB_Button := TNewButton.create(WizardForm);
with DB_Button do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirTreeViewClick;
end;
WizardForm.GroupBrowseButton.Hide;
GB_Button := TNewButton.create(WizardForm);
with GB_Button do
begin
Parent := WizardForm.SelectProgramGroupPage;
SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirFolderTreeViewClick;
end;
end;
[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010C403000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 953437573746F6D50616765310D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D4953437573746F6D506167653 10D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6 F6B506167650D53656C65637
saurn,
Совсем не то. Надо как-то через {src}
Совсем не то. Надо как-то через {src} »
Тогда, полагаю, так.
#define Name "Test"
[Setup]
SourceDir=.
OutputDir=Setup
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
DefaultGroupName=Test
OutputBaseFilename=Setup
AllowNoIcons=true
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;
[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}
[CustomMessages]
russian.RestoreButton=Сброс
[Code]
var
ISCustomPage1: TWizardPage;
Installer: TNewRadioButton;
Portable: TNewRadioButton;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_szPath: String;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure RedesignWizardForm;
begin
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
{ Installer }
Installer := TNewRadioButton.Create(WizardForm);
with Installer do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(16);
Top := ScaleY(32);
Width := ScaleX(113);
Height := ScaleY(17);
Caption := 'Установка';
Checked := True;
end;
{ Portable }
Portable := TNewRadioButton.Create(WizardForm);
with Portable do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(16);
Top := ScaleY(72);
Width := ScaleX(113);
Height := ScaleY(17);
Caption := 'Распаковка';
end;
Installer.TabOrder := 0;
Portable.TabOrder := 1;
end;
#define A = (Defined UNICODE) ? "W" : "A"
const
DRIVE_CDROM = 5;
var
BrowseForm: TSetupForm;
BrowseForm2: TSetupForm;
DirTreeView: TFolderTreeView;
DirFolderTreeView: TStartMenuFolderTreeView;
EditTreeView: TNewEdit;
EditFolderTreeView: TNewEdit;
DB_Button: TNewButton;
GB_Button: TNewButton;
OldEvent_NoIconsCheckClick: TNotifyEvent;
OKButton, ButtonNewFolder: TButton;
function GetDriveType(nDrive: string): Longint; external 'GetDriveType{#A}@kernel32.dll stdcall';
function CDROM(Drive: String): Boolean;
begin
Result:= GetDriveType(Drive) = 5;
end;
procedure GetDrive(Sender: TObject);
var
Path, Path1: String;
begin
Path:= ExtractFileDrive(DirTreeView.Directory);
Path1:= ExtractFileDrive(EditTreeView.Text);
ButtonNewFolder.Enabled:= not CDROM(Path);
OKButton.Enabled:= not CDROM(Path1);
if CDROM(Path1) then MsgBox('Установка на выбранный диск невозможна!', mbError, MB_OK);
end;
procedure DirTreeViewChange(Sender: TObject);
begin
if DirTreeView.Directory <> WizardForm.DirEdit.Text then begin
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
GetDrive(nil);
end else
EditTreeView.Text := DirTreeView.Directory;
end;
procedure DirFolderTreeViewChange(Sender: TObject);
begin
if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else
EditFolderTreeView.Text := DirFolderTreeView.Directory;
end;
procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
1: begin
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
EditTreeView.Text := _szPath;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GetDrive(nil);
end;
2: begin
DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}';
end;
3: if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text;
end;
end;
procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}'));
5: begin
DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}';
end;
6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text;
end;
end;
procedure BrowseDirTreeViewClick(Sender: TObject);
begin
BrowseForm := CreateCustomForm();
with BrowseForm do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm;
Font.Size := 8;
end;
DirTreeView := TFolderTreeView.Create(nil)
with DirTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
OnChange := @DirTreeViewChange;
Parent := BrowseForm;
end;
EditTreeView := TNewEdit.Create(nil);
with EditTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirTreeView.Directory;
Parent := BrowseForm;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 1;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
ButtonNewFolder:= TButton.Create(nil)
with ButtonNewFolder do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 2;
OnClick := @BrowseFormButtonsTreeViewOnClick;
end;
OKButton:= TButton.Create(nil);
with OKButton do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonOK);
Tag := 3;
OnClick := @BrowseFormButtonsTreeViewOnClick;
ModalResult := mrOk;
end;
DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure BrowseDirFolderTreeViewClick(Sender: TObject);
begin
BrowseForm2 := CreateCustomForm();
with BrowseForm2 do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;
with TLabel.Create(nil) do
begin
SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm2;
Font.Size := 8;
end;
DirFolderTreeView := TStartMenuFolderTreeView.Create(nil)
with DirFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userst artup}'),ExpandConstant('{commonstartup}'));
OnChange := @DirFolderTreeViewChange;
Parent := BrowseForm2;
end;
EditFolderTreeView := TNewEdit.Create(nil);
with EditFolderTreeView do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirFolderTreeView.Directory;
Parent := BrowseForm2;
Font.Color := clWindowText;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 4;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 5;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
end;
with TButton.Create(nil) do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm2;
Caption := SetupMessage(msgButtonOK);
Tag := 6;
OnClick := @BrowseFormButtonsFolderTreeViewOnClick;
ModalResult := mrOk;
end;
DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True);
ShowModal;
Free;
end;
end;
procedure NoIconsCheckClick(Sender: TObject);
begin
OldEvent_NoIconsCheckClick(Sender);
GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;
WizardForm.DirBrowseButton.Hide;
DB_Button := TNewButton.create(WizardForm);
with DB_Button do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirTreeViewClick;
end;
WizardForm.GroupBrowseButton.Hide;
GB_Button := TNewButton.create(WizardForm);
with GB_Button do
begin
Parent := WizardForm.SelectProgramGroupPage;
SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseDirFolderTreeViewClick;
end;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectDir:
begin
case Installer.Checked of
False: _szPath := ( AddBackslash(ExpandConstant('{src}')) + 'Portable' );
True: _szPath := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}') );
end;
WizardForm.DirEdit.Text := _szPath;
end;
end;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010C403000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 953437573746F6D50616765310D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D4953437573746F6D506167653 10D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6 F6B506167650D53656C65637
P.S.
Точнее формулируйте вопрос.
saurn,
Изначальный путь правильный. Нажатие на сброс: путь правильный.
При выборе другой папки и созданию новой, название программы не соответствует названию изначального пути и названию при нажатию Сброс
Где прописать не могу найти.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.