Пользовательские размеры страниц nsis - PullRequest
3 голосов
/ 03 апреля 2011

Я пытаюсь создать страницу, которая показывает мой веб-сайт (nsWeb::ShowWebInPage).Проблема в том, что он не может показать всю страницу.

Как я могу определить новые размеры (высота х ширина) для этой страницы?

Ответы [ 3 ]

8 голосов
/ 03 февраля 2013

Это большая задача. Вот несколько шагов, чтобы заставить его работать более гибко.

Скачать хакер ресурсов: http://www.angusj.com/resourcehacker/

Затем решите, хотите ли вы редактировать Unicode или ANSI-версию NSIS. Вы могли бы сделать и то и другое, но зачем? Сначала найдите папку Program Files \ NSIS. Это будет папка BASE для следующих каталогов на следующем шаге, если вы компилируете для ANSI. Если вы компилируете для Unicode, перейдите в папку Program Files \ NSIS \ Unicode, и теперь это базовая папка для следующих шагов.

Загляните в папку \ Contrib \ UIs. В этой папке хранится куча исполняемых файлов. В зависимости от того, какую конфигурацию MUI2 вы используете, вам нужно отредактировать соответствующий файл AND modern.exe. Версия файла зависит от того, есть ли у вас изображение заголовка, правильно ли оно настроено и т. Д.

Например, в моем случае у меня были эти определения в моем установочном скрипте

!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT

Теперь, когда я смотрю в \ Contrib \ Modern UI 2 \ Interface.nsh, я довольно легко могу определить, какой файл мне нужно отредактировать. Вот что я смотрю на:

!insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
!insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe"
!insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"

Поскольку я использую MUI_HEADERIMAGE_RIGHT, я буду редактировать файл modern_headerbmpr.exe.

Теперь откройте Resource Hacker и загрузите файл, который вы хотите редактировать. Resource Hacker имеет графический интерфейс, так что, когда вы проходите через каждое диалоговое окно и каждый элемент управления в диалоговом окне, вы можете видеть сторону изменения графического интерфейса после нажатия кнопки «Перекомпилировать». Эта часть довольно проста. Пройдите по ВСЕМ диалоговым окнам (почему бы и нет) и отредактируйте элементы управления и размеры, включая параметры основного установщика. В этом файле есть только один, так что вам также необходимо открыть файл modern.exe, содержащий элементы управления, которые входят в страницы программы установки. Опять же, пройдитесь по всем диалогам и измените все размеры, чтобы каждый элемент управления выглядел хорошо. Скомпилируйте и сохраните файлы обратно в эту папку.

Бонусные баллы: Для тестирования просто перезаписать исходные файлы. Вы сделали резервную копию, верно? Для развертывания назовите новые файлы, например, «modern-wide.exe», для каждого редактируемого файла. Позже мы можем динамически переключаться между ними с небольшим количеством магии.

Перекомпилируйте ваш установщик, и теперь вы должны увидеть установщик нового размера.

Если вы этого не сделаете, убедитесь, что вы находитесь в правильной папке ANSI или UNICODE, иначе ваши изменения не будут работать.

Некоторые экраны, однако, добавляют элементы управления динамически. Как пример, посмотрите на \ Contrib \ Modern UI 2 \ Pages \ Welcome.nsh.

Этот файл добавляет заголовок и текст приветствия в коде, а НЕ через исполняемые файлы. Аааа, я знаю! Итак, найдите макрос:

!macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE

И эти строки кода:

${NSD_CreateBitmap} 0u 0u 109u 193u ""
...
${NSD_CreateLabel} 120u 10u 195u ${MUI_WELCOMEPAGE_TITLE_HEIGHT}u "${MUI_WELCOMEPAGE_TITLE}"
...
${NSD_CreateLabel} 120u ${MUI_WELCOMEPAGE_TEXT_TOP}u 195u 130u "${MUI_WELCOMEPAGE_TEXT}"

Как вы видите, здесь указаны единицы измерения: X Y WIDTH HEIGHT, так что теперь вы можете изменить эти элементы управления. Конечно, если вы не используете страницу приветствия, не беспокойтесь. Но вам может понадобиться отредактировать страницы, которые вам не подходят, таким образом.

Вы можете перезаписать оригинал или снова сохранить файл с добавлением «-wide» к имени файла.

Теперь, вы в основном сделали!

Теперь, чтобы упростить переключение, я предполагаю, что вы сохранили:

welcome.nsh as welcome-wide.nsh
modern.exe as modern-wide.exe 
and let's say modern_headerbmpr.exe as modern_headerbmpr-wide.exe

Теперь, в вашем установщике, добавьте это! Определение ДО, включая MUI2.nsh:

!define MUI_ALTERNATE_SIZE_EXT "-wide" 

в interface.nsh, измените код на этот:

!ifdef MUI_ALTERNATE_SIZE_EXT
    !insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern${MUI_ALTERNATE_SIZE_EXT}.exe"
    !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
    !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr${MUI_ALTERNATE_SIZE_EXT}.exe"
    !insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
    !insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
    !insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"
!else
    !insertmacro MUI_DEFAULT MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe"
    !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE "${NSISDIR}\Contrib\UIs\modern_headerbmp.exe"
    !insertmacro MUI_DEFAULT MUI_UI_HEADERIMAGE_RIGHT "${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe"
    !insertmacro MUI_DEFAULT MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
    !insertmacro MUI_DEFAULT MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
    !insertmacro MUI_DEFAULT MUI_BGCOLOR "FFFFFF"
!endif

Это, по сути, переключает ваш установщик с обычного на "-wide", когда вы определяете MUI_ALTERNATE_SIZE_EXT как "-wide". Обратите внимание, как я добавил $ {MUI_ALTERNATE_SIZE_EXT} непосредственно к имени файла, включенному в файлы, которые я изменил, и вы, конечно, должны сделать это для файлов, которые вы изменили при запуске.

Теперь вам также необходимо сделать это в файле MUI2.NSH, например:

!ifdef MUI_ALTERNATE_SIZE_EXT
    !include "Pages\Components.nsh"
    !include "Pages\Directory.nsh"
    !include "Pages\Finish.nsh"
    !include "Pages\InstallFiles.nsh"
    !include "Pages\License.nsh"
    !include "Pages\StartMenu.nsh"
    !include "Pages\UninstallConfirm.nsh"
    !include "Pages\Welcome${MUI_ALTERNATE_SIZE_EXT}.nsh"
!else
    !include "Pages\Components.nsh"
    !include "Pages\Directory.nsh"
    !include "Pages\Finish.nsh"
    !include "Pages\InstallFiles.nsh"
    !include "Pages\License.nsh"
    !include "Pages\StartMenu.nsh"
    !include "Pages\UninstallConfirm.nsh"
    !include "Pages\Welcome.nsh"
!endif

Когда вы редактируете больше файлов, вы просто сохраняете версию каждого нового пользовательского интерфейса, который вы создаете, в отдельных именах файлов, и теперь вы можете переключать стиль пользовательского интерфейса вашего установщика, используя только одно определение. Вы можете называть файлы по своему желанию и распространять эту схему на другие области, где у вас могут возникнуть проблемы.

Это непростая задача, но она может быть выполнена.

3 голосов
/ 07 апреля 2011

У вас есть две опции:

  • Используйте инструкцию ChangeUI вместе с настраиваемым / измененным пользовательским интерфейсом, созданным Resource Hacker (NSIS поставляется с стандартным и современным пользовательским интерфейсом в папке contrib, вы можете просто изменитьте)
  • Изменение размера диалога во время выполнения с системным плагином (вызов user :: SetWindowPos) в обратном вызове show для страницы
1 голос
/ 23 мая 2011

Вы должны изменить размеры всех диалогов, используя Resource Hacker. Стандартный (внутренний) размер диалогового окна составляет 300 * 140 единиц, увеличивайте его по своему желанию.

Не забудьте также увеличить все диалоговые окна (страница лицензии, страница установки, страница каталога и т. Д.) И на этот новый размер.

...