В стилях VCL для Inno Setup возникли проблемы с обложкой некоторых элементов страницы загрузчика

Я использовал VCL Styles для Inno Setup, пытаясь создать скин для моего установщика, и столкнулся с небольшой проблемой, с которой, я надеюсь, кто-то сможет помочь.

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

Я использовал установщик, который я сделал в 2008 году. Совсем недавно я хотел добавить к нему, сделать его более автоматическим, иметь меньше и больше проницательных подсказок и выглядеть лучше.

Я добавил InnoTools Downloader от Sherlock Software, когда впервые сделал это, и с тех пор использовал его без особых проблем.

Я только что добавил стили VCL, и в InnoTools Downloader есть элемент, который я совершенно не знаю, как создавать скины вместе с остальной частью установщика. Все остальное выглядит отлично, но маленькая коробка внутри страницы загрузки была серой.

Итак, я попробовал Inno Download Plugin от Mitrich Software. Эй, серая коробка исчезла, но исчезла... Текст окна ошибки светло-серый на белом фоне и не читается.

Я сделал больше поиска и нашел, Как применить стили VCL к основанным на DLL формам. Когда я пытался загрузить InnoTools Downloader от Sherlock Software, используя:

procedure DllLoadStyle(const StyleFilename: WideString);
  external 'DllLoadStyle@files:itdownload.dll stdcall';

Я только что получил ошибку: Unknown Type 'WideString'

Я использую ANSI-версию Inno Setup, потому что, когда я впервые и много лет назад пробовал версию Unicode, она испортила загрузчик InnoTools, и с тех пор я использую ANSI.

Я попытался изменить WideString на просто String, чтобы соответствовать форматированию, которое уже использовал VCL:

procedure LoadVCLStyle(VClStyleFile: String);
  external 'LoadVCLStyleA@files:VclStylesInno.dll stdcall';

Но, к сожалению, это дало мне ошибку при запуске установщика:

Runtime Error (at -1:0):
Cannot Import dll:C:\...\Temp\is-XXXXX.tmp\itdownloaded.dll

1) Мне интересно, если мне не повезло с тем, что я хочу создать скин для этой части из-за того, что оба загрузчика используют внешний.dll? 2) Есть ли способ направить VCL на скин этого элемента на странице? 3) Может ли какой-либо из файлов DLL быть загружен аналогично связанной странице (и исходному файлу VCL .dll)? 4) Может ли использование Inno Setup для Unicode дать мне какие-либо дополнительные средства для решения этой проблемы (если мне не нужно переписывать целый набор кода в моих исходных установщиках)?

Я очень сожалею, я действительно не понимаю ничего общего с новыми страницами в настоящее время. Большая часть того, что я сделал с моими установщиками, использует MsgBox, чтобы избежать необходимости работать с ними в ситуациях, когда появляются новые обновления и другие подобные уведомления, которые могут потребовать ввода данных пользователем.

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

Если мне удастся получить 10 репутации, я также могу опубликовать примеры изображений, если это будет полезно.

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

Заранее спасибо за любую помощь и понимание.

Стили VCL для Inno Setup 1.2.2.1 / Inno Setup 5.5.5a, установленная из ispack-5.5.5.exe / InnoTools Downloader 0.3.5 / Inno Download Plugin 1.4.0.

Редактировать: Добавлены изображения (спасибо за очки за это). Проигнорировать ошибку при загрузке не удалось, я сделал это, чтобы она остановилась и вызвала всплывающее окно для захвата скинов окна и всплывающего окна.

3 ответа

Решение

Плагин VCL Styles for Inno setup может применять стиль только к этим элементам управления inno.

  • TNewEdit
  • TEdit
  • TPasswordEdit
  • TNewMemo
  • TNewComboBox
  • TNewListBox
  • TListBox
  • TNewButton
  • TNewCheckBox
  • TNewRadioButton
  • TSelectFolderForm
  • TFolderTreeView
  • TStartMenuFolderTreeView
  • TRichEditViewer
  • TNewStaticText
  • TNewNotebook
  • TNewNotebookPage
  • TPanel

    таким образом, вы не можете применить скин к стороннему компоненту, такому как используемый InnoTools Downloader плагин. В любом случае вы можете запросить такую ​​функцию на странице выпуска проекта.

Я на самом деле написал этот код, который вы используете. Я написал это некоторое время назад, так что я едва знаком с этим больше, но проблема в том, что вы не используете версию Inno Setup для Unicode, как я это делал, когда писал ее. Это не всегда очень простой переход на версию Unicode, вам, возможно, придется многое сделать для вашего проекта (-ов), чтобы настроить его. Но WideString Тип доступен только в версии Unicode (так как это тип Unicode).

Обновление: Автор Inno Download Plugin от Mitrich Software выпустил обновление. Inno Download Plugin 1.4.1 устраняет проблему с всплывающим окном и обходит страницу загрузки, не имея серого поля. Приветствия и спасибо всем за помощь.

https://groups.google.com/forum/

Пока что адрес электронной почты на веб-сайте InnoTools Downloader от Sherlock Software пришел в норму.

Ответ об ошибке в стилях VCL пока не получен: https://code.google.com/p/vcl-styles-plugins/issues/detail?id=5&can=1

Другие вопросы по тегам