2016-12-10 5 views

ответ

2
  1. Для «Start папку в меню» части, самым простым решением является просто переместить все элементы управления из SelectProgramGroupPage в SelectDirPage. И, конечно же, сдвиньте их все вниз, ниже существующих элементов управления.

    Вы также должны перенести оригинал DiskSpaceLabel вверх, рядом с другими соответствующими элементами управления.

    Последний шаг - обновить порядок вкладок.

    Чтобы скрыть настоящую страницу «Выбрать папку меню« Пуск », используйте ShouldSkipPage event function. Если вы использовали DisableProgramGroupPage=yes, выбранная папка не будет отображаться на странице «Готово к установке».

  2. Для «значка рабочего стола» вы не можете перемещать элемент управления 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; 

All on one page

Ready to install

Конечно, я должен был make the wizard form higher, чтобы соответствовать всем элементам управления.