Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 558

Профиль | Отправить PM | Цитировать


K.A.V.,

Да. Замена стиля в ресурсе работает.

И, к слову, об изменении ресурсов. Кроме стилей, чаще всего в modern.exe пользователи изменяют размеры окон страниц, кнопок и других элементов (или скрывают не нужные элементы).

Вполне можно было бы сделать на NSIS программку, упрощающую изменение ресурсов в modern.exe Dialog.
Ввёл нужные значения размеров, отметил нужные стили и нажал кнопку, сохранив modern.exe , скажем, как - modern_correct.exe . Было бы весьма полезно.

Но нигде в сети не обнаружил даже намёка, как с помощью NSIS можно изменить/заменить ресурсы файлов.

Хотя... Однажды kotkovets рассказывал, как это делается (правда только для битмапов)... Вот, что я понял из его рассказа-примера и использовал в таком примере (+ добавил некоторые описания...) :

Пример замены ресурса в WinRar 5.21x32 рус ( http://www.rarlab.com/rar/wrar521ru.exe )

Заменим ресурс Bitmap 104 в RarLng.dll. Это - цветная картинка-лейба WinRAR из "Справка" -> "О программе..."



Заменяем эту цветную картинку на черно-белую - из файла 104.bmp :

читать дальше »
Код: Выделить весь код
!include "logiclib.nsh"
ShowInstDetails show
OutFile "replacement_of_ resources_ BMP-test.exe"

!define RT_BITMAP       2  ;Bitmap resource.
/* при необходимости используем :
!define RT_CURSOR       1  ;Hardware-dependent cursor resource.
!define RT_ICONH        3  ;ardware-dependent icon resource.
!define RT_MENU         4  ;Menu resource.
!define RT_DIALOG       5  ;Dialog box.
!define RT_STRING       6  ;String-table entry.
!define RT_FONTDIR      7  ;Font directory resource.
!define RT_FONT         8  ;Font resource.
!define RT_ACCELERATOR  9  ;Accelerator table.
!define RT_RCDATA       10 ;Application-defined resource (raw data).
!define RT_MESSAGETABLE 11 ;Message-table entry.
!define /math RT_GROUP_CURSOR ${RT_CURSOR} + ${RT_MESSAGETABLE}
!define /math RT_GROUP_ICON   ${RT_ICONH} + ${RT_MESSAGETABLE}
!define RT_VERSION      16 ;Version resource.
!define RT_DLGINCLUDE   17 ;include heder file
!define RT_PLUGPLAY     19 ;Plug and Play resource.
!define RT_VXD          20 ;DWORD cbData
!define RT_ANICURSOR    21 ;Animated cursor.
!define RT_ANIICON      22 ;Animated icon.
!define RT_HTML         23 ;HTML resource.
!define RT_MANIFEST     24 ;Side-by-Side Assembly Manifest.
*/
Section
   System::Store S
   FileOpen $0 "$EXEDIR\104.bmp" r
${Unless} ${Errors}
       System::Call "kernel32::GetFileSizeEx(ir0,*l.r1)"
;Т.к. мы заменяем растровое  изображение (BMP файл), то для его правильной обработки
;сначала необходимо устранить первые 14 байт заголовка растрового изображения.
       IntOp $1 $1 - 14
       System::Call "kernel32::SetFilePointer(ir0,i14,i0,i0)"
       System::Alloc $1
       Pop $2
       System::Call "kernel32::ReadFile(ir0, ir2, ir1, *i.r3, i0)"
       FileClose $0
; BeginUpdateResource - создает описатель для EXE или DLL файла, в котором нужно заменить ресурс
; UpdateResource - используя описатель  файла добавляет, удаляет или заменяет в нем ресурсы
; EndUpdateResource - закрывает описатель  файла
       System::Call "kernel32::BeginUpdateResource(t'$EXEDIR\RarLng.dll', i0)i.r0"
${Unless} $0 == 0
           System::Call "kernel32::UpdateResource(ir0, i${RT_BITMAP}, i104, i1033, ir2, ir3)"  ;  104 - ресурс  ,  1033 - язык
           System::Call "kernel32::EndUpdateResource(ir0,i0)"
${Else}
           DetailPrint "файла для изменения не существует!"
${EndUnless}
       System::Free $2
${Else}
       DetailPrint "файл для замены не существует!"
${EndUnless}
   System::Store L
SectionEnd

Section
SectionEnd
В итоге :



Но как заменить в modern.exe Dialog 105 - на откорректированный... Вроде сначала, сохранённый-откорректированный .rc файл надо конвертировать в бинарный вид, а потом уже заменять ресурс...
(Если напрямую заменять .rc ,то заменяться то он вроде как заменяется (точнее изменяется, но без внесённых изменений и при этом получается черт те что) )...
И скорее всего, не так это делается... Тогда как ?

ps Во вложении черно-белая картинка - файл 104.bmp :

Последний раз редактировалось MKN, 27-05-2020 в 16:17.


Отправлено: 11:06, 25-02-2015 | #1523