Как добавить их на одну страницу?Inno Setup - папка для установки программного обеспечения, папка с пустым меню, значок рабочего стола на одной странице
ответ
Для «Start папку в меню» части, самым простым решением является просто переместить все элементы управления из
SelectProgramGroupPage
вSelectDirPage
. И, конечно же, сдвиньте их все вниз, ниже существующих элементов управления.Вы также должны перенести оригинал
DiskSpaceLabel
вверх, рядом с другими соответствующими элементами управления.Последний шаг - обновить порядок вкладок.
Чтобы скрыть настоящую страницу «Выбрать папку меню« Пуск », используйте
ShouldSkipPage
event function. Если вы использовалиDisableProgramGroupPage=yes
, выбранная папка не будет отображаться на странице «Готово к установке».Для «значка рабочего стола» вы не можете перемещать элемент управления
TasksList
, поскольку он заполняется только при вводе страницы «Выбрать дополнительные задачи». Вы должны создать свой новый флажок. И используйтеCheck
parameter, чтобы привязать пользовательский флажок кIcons
section entry.Чтобы добавить информацию о задаче "значок на рабочем столе" на "Готов к установке" страницу, вы должны реализовать
UpdateReadyMemo
event function
[Setup]
DisableProgramGroupPage=no
AllowNoIcons=yes
[Icons]
Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"; \
Check: ShouldCreateDesktopIcon
[Code]
var
DesktopCheck: TNewCheckBox;
function ShouldCreateDesktopIcon: Boolean;
begin
Result := DesktopCheck.Checked;
end;
procedure InitializeWizard();
var
Offset: Integer;
begin
{ shift the original `DiskSpaceLabel` up, next to the other related controls }
WizardForm.DiskSpaceLabel.Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(16);
{ Move all the controls from the `SelectProgramGroupPage` to the `SelectDirPage`. }
{ And shift them all down, below the existing controls. }
{ Update tab order. }
Offset := WizardForm.DiskSpaceLabel.Top + WizardForm.DiskSpaceLabel.Height + ScaleY(16) - WizardForm.SelectGroupBitmapImage.Top;
WizardForm.SelectGroupBitmapImage.Parent := WizardForm.SelectDirPage;
WizardForm.SelectGroupBitmapImage.Top := WizardForm.SelectGroupBitmapImage.Top + Offset;
WizardForm.SelectStartMenuFolderLabel.Parent := WizardForm.SelectDirPage;
WizardForm.SelectStartMenuFolderLabel.Top := WizardForm.SelectStartMenuFolderLabel.Top + Offset;
WizardForm.SelectStartMenuFolderBrowseLabel.Parent := WizardForm.SelectDirPage;
WizardForm.SelectStartMenuFolderBrowseLabel.Top := WizardForm.SelectStartMenuFolderBrowseLabel.Top + Offset;
WizardForm.GroupEdit.Parent := WizardForm.SelectDirPage;
WizardForm.GroupEdit.Top := WizardForm.GroupEdit.Top + Offset;
WizardForm.GroupEdit.TabOrder := WizardForm.GroupEdit.TabOrder + 100;
WizardForm.GroupBrowseButton.Parent := WizardForm.SelectDirPage;
WizardForm.GroupBrowseButton.Top := WizardForm.GroupBrowseButton.Top + Offset;
WizardForm.GroupBrowseButton.TabOrder := WizardForm.GroupBrowseButton.TabOrder + 100;
WizardForm.NoIconsCheck.Parent := WizardForm.SelectDirPage;
WizardForm.NoIconsCheck.Top := WizardForm.GroupEdit.Top + WizardForm.GroupEdit.Height + ScaleY(16);
WizardForm.NoIconsCheck.TabOrder := WizardForm.NoIconsCheck.TabOrder + 100;
{ create new "Create a desktop icon" checkbox }
DesktopCheck := TNewCheckBox.Create(WizardForm);
DesktopCheck.Parent := WizardForm.SelectDirPage;
DesktopCheck.Top := WizardForm.NoIconsCheck.Top + WizardForm.NoIconsCheck.Height + ScaleY(6);
DesktopCheck.Width := WizardForm.NoIconsCheck.Width;
DesktopCheck.Height := WizardForm.NoIconsCheck.Height;
DesktopCheck.Caption := ExpandConstant('{cm:CreateDesktopIcon}');
DesktopCheck.TabOrder := 200;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
{ To hide the real "Select Start Menu Folder" page }
Result := (PageID = wpSelectProgramGroup);
end;
function UpdateReadyMemo(
Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: string;
begin
if Length(MemoUserInfoInfo) > 0 then
Result := Result + MemoUserInfoInfo + NewLine + NewLine;
if Length(MemoDirInfo) > 0 then
Result := Result + MemoDirInfo + NewLine + NewLine;
if Length(MemoTypeInfo) > 0 then
Result := Result + MemoTypeInfo + NewLine + NewLine;
if Length(MemoComponentsInfo) > 0 then
Result := Result + MemoComponentsInfo + NewLine + NewLine;
if Length(MemoGroupInfo) > 0 then
Result := Result + MemoGroupInfo + NewLine + NewLine;
if DesktopCheck.Checked then
begin
S := DesktopCheck.Caption;
StringChange(S, '&', '');
Result :=
Result + SetupMessage(msgReadyMemoTasks) + NewLine +
Space + S + NewLine + NewLine;
end;
end;
Конечно, я должен был make the wizard form higher, чтобы соответствовать всем элементам управления.