.: NSIS - все вопросы :. часть 2.

Ответить
 • Просмотры: 25
Аватара пользователя
K.A.V.

Re: .: NSIS - все вопросы :. часть 2.

Сообщение K.A.V. »

Цитата Kopejkin:



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

Можно ли вообще избавиться от выделения цветом?
.: NSIS - все вопросы :. часть 2.




у меня такого эффекта нет.. win7 x64


Цитата MaGoth:



Собственно сам вопрос, в каком файле надо порыться чтобы это поправить?!
.: NSIS - все вопросы :. часть 2.




в написанном скрипте..
Аватара пользователя
MKN

Re: .: NSIS - все вопросы :. часть 2.

Сообщение MKN »

Цитата Kopejkin:



Если щелкать мышью в "переключателе" справа от компонентов, а не по ним, нужный компонент отмечается, но цветной прямоугольник выделения остается на компоненте, ранее выбранном щелчком по нему.
.: NSIS - все вопросы :. часть 2.




Посмотрел , как это выглядит на WinXP - действительно, есть такое остаточное явление...

Но, в то же время, в коде ранее предложенным kotkovets, (это где кнопка ДАЛЕЕ не активна пока не будет выбран 1 из компонентов ) - такого эффекта нет...

Повторю этот код :



Код:

Код: Выделить всё

OutFile "example.exe"
var hInst
!include "MUI2.nsh"
   ;функция во время открытия странички компонентов
!define MUI_PAGE_CUSTOMFUNCTION_SHOW COMPONENTS_SHOW
   ;---------------------------------------------------
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
;макрос проверки секций, если одна из секций отмечена возврат - 1, иначе - 0;
;в intsec - указываем количество секций в скрипте
!macro CheckSection intsec ret
   Push ${intsec}
   System::Store SR2
   ${For} $R0 1 $R2
       SectionGetFlags $R0 $R1
       ${IfThen} $R1 == 1 ${|}${Break}${|}
   ${Next}
   Push $R1
   System::Store L
   Pop ${ret}
!macroend
SubSection "test" IDS_1
Section  /o "Компонент №1" ID_1
SectionEnd
Section /o "Компонент №2" ID_2
SectionEnd
Section /o "Компонент №3" ID_3
SectionEnd
Section /o "Компонент №4" ID_4
SectionEnd
Section /o "Компонент №5" ID_5
SectionEnd
Section /o "Компонент №6" ID_6
SectionEnd
SubSectionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
    !insertmacro RadioButton ${ID_1}
    !insertmacro RadioButton ${ID_2}
    !insertmacro RadioButton ${ID_3}
    !insertmacro RadioButton ${ID_4}
    !insertmacro RadioButton ${ID_5}
    !insertmacro RadioButton ${ID_6}
  !insertmacro EndRadioButtons
  !insertmacro CheckSection 6 $R0
  StrCmp $R0 0 0 +2
  EnableWindow $hInst ${SW_HIDE} ;отключаем кнопку "установить"
  StrCmp $R0 1 0 +2
  EnableWindow $hInst ${SW_SHOW} ;включаем кнопку "установить"
FunctionEnd
Function .OnInit
  StrCpy $1 ${ID_1}
  ;фиктивно отключаем группу
  ;SectionSetFlags ${IDS_1} ${SECTION_OFF} 
  SectionSetFlags ${IDS_1} -290  ; Чтобы компоненты в группе по умолчанию  были свёрнуты :
FunctionEnd
Function COMPONENTS_SHOW
  GetDlgItem $hInst $HWNDPARENT 1 ;находим HWND кнопки "установить"
  !insertmacro CheckSection 6 $R0
  StrCmp $R0 0 0 +2
  EnableWindow $hInst ${SW_HIDE} ;отключаем кнопку "установить"
  StrCmp $R0 1 0 +2
  EnableWindow $hInst ${SW_SHOW} ;включаем кнопку "установить"
FunctionEnd

Как это понимать, я затрудняюсь комментировать...
Аватара пользователя
Valdise

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Valdise »

Цитата kotkovets:



у меня такого эффекта нет.. win7 x64
.: NSIS - все вопросы :. часть 2.




Win7(x64) у меня тоже, а для тестирования есть несколько виртуалок.

На всех этот эффект есть.


Цитата MKN:



...такого эффекта нет
.: NSIS - все вопросы :. часть 2.




На этом скрипте тоже есть.

.



Еще вопрос по NewAdvSplash. Указано, что можно воспроизвести *.mp3 и *.wav. WAV воспроизводится без проблем. а вот MP3 - нет.

Связано ли это с тем, что у меня не установлены никакие кодеки, кроме тех, что устанавливаются вместе с системой?

Еще ни разу не ощутил в них потребности, т.к. использую VLC Player. Если нужно чего перекодировать - Format Factory. Насколько я понимаю, эти программы используют свои кодеки автономно.
Аватара пользователя
MKN

Re: .: NSIS - все вопросы :. часть 2.

Сообщение MKN »

Цитата kotkovets:



в написанном скрипте..
.: NSIS - все вопросы :. часть 2.




Угу, нашел это упущение и прибил... Изображение






Цитата Kopejkin:



Еще вопрос по NewAdvSplash. Указано, что можно воспроизвести *.mp3 и *.wav. WAV воспроизводится без проблем. а вот MP3 - нет.

Связано ли это с тем, что у меня не установлены никакие кодеки, кроме тех, что устанавливаются вместе с системой?

Еще ни разу не ощутил в них потребности, т.к. использую VLC Player. Если нужно чего перекодировать - Format Factory. Насколько я понимаю, эти программы используют свои кодеки автономно.
.: NSIS - все вопросы :. часть 2.




Возможно здесь установленный Microsoft Visual C++ Redistributable_x86 2005 требуется...
Аватара пользователя
MKN

Re: .: NSIS - все вопросы :. часть 2.

Сообщение MKN »

Цитата kotkovets:



...такого эффекта нет

я имел в ввиду не в скрипте, а в самой системе, независимо от скрипта..
Вложения
WMI.zip
(2.93 КБ) 0 скачиваний
WMI.zip
(2.93 КБ) 0 скачиваний
Аватара пользователя
MKN

Re: .: NSIS - все вопросы :. часть 2.

Сообщение MKN »

kotkovets,

А как натравить скрипт на конкретный TTF ? (рядом находящиеся не видит...)

И очень очень долго идёт обработка (у меня минуты три, а что находит - не понятно...)

Вот так после обработки :

Код:

Код: Выделить всё

===============root\CIMV2=====================
GlobalUserInterface.CompositeFont{A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}
Global User Interface
GlobalUserInterface.CompositeFont
=======
GlobalSerif.CompositeFont{A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}
Global Serif
GlobalSerif.CompositeFont
=======
GlobalSansSerif.CompositeFont{A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}
Global Sans Serif
GlobalSansSerif.CompositeFont
=======
GlobalMonospace.CompositeFont{A3051CD0-2F64-3813-A88D-B8DCCDE8F8C7}
Global Monospace
GlobalMonospace.CompositeFont
=======
===================end======================
Готово

Может WMI вообще не пригоден для работы с шрифтами ? И может использовать API FontResource функции ? Правда никто не знает как...
Аватара пользователя
kotkovets

Re: .: NSIS - все вопросы :. часть 2.

Сообщение kotkovets »

Цитата MKN:



Каким образом с помощью NSIS извлечь из файлов эту информацию ?
.: NSIS - все вопросы :. часть 2.




самый простой вариант:
http://nsis.sourceforge.net/MoreInfo_plug-in



Цитата MKN:



Необходимо определить тип файла у файла лишённого расширения
.: NSIS - все вопросы :. часть 2.




каждый тип файла имеет свою уникальную сигнатуру, по гугли по определенным расширениям...

Читать файл нужно с помощью команды: FileReadByte побайтовое чтение файла с заданным смещением..

получили сигнатуру и сравниваем...

например архив rar имеет сигнатуру rar! в начале файла ( FileRead )

но потом нужно отсечь лишние символы - оставить первые 4 символа или 4 байта в двоичном ввиде через ( FileReadByte )
Аватара пользователя
Waterclo

Re: .: NSIS - все вопросы :. часть 2.

Сообщение Waterclo »

Цитата kotkovets:



Читать файл нужно с помощью команды: FileReadByte побайтовое чтение файла с заданным смещением..

получили сигнатуру и сравниваем...
.: NSIS - все вопросы :. часть 2.




Это сложно и совершенно не понятно , как реализовать в NSIS...

Тогда такой вопрос - если использовать знаменитую утилиту TrID - File Identifier (
http://mark0.net/soft-trid-e.html
) , то каким образом перенаправить содержимое из окна консоли в , скажем, текстовый файл, для дальнейшей обработки ?
Аватара пользователя
MKN

Re: .: NSIS - все вопросы :. часть 2.

Сообщение MKN »

Цитата MKN:



Это сложно и совершенно не понятно , как реализовать в NSIS...
.: NSIS - все вопросы :. часть 2.




че там сложного, главное знать, сколько байтов нужно прочитать, сигнатура файла одинакова для своего расширения...

пример на архиве 7z:



Код:

Код: Выделить всё

outfile test.exe
Section
  fileopen $0 "file" r
  filereadbyte $0 $1 ;читаем первый байт
  filereadbyte $0 $2 ;читаем второй байт
  fileclose $0
    MessageBox MB_OK "Двоичный код: $1 $2" IDOK
  IntFmt $1 "%c" $1 ;конвертируем код в символ
  IntFmt $2 "%c" $2
    MessageBox MB_OK "сигнатура: $1$2" IDOK
SectionEnd

exe файл сигнатура - MZ (первые два байта)


Цитата MKN:



каким образом перенаправить содержимое из окна консоли в , скажем, текстовый файл
.: NSIS - все вопросы :. часть 2.




bat файл:



Код:

Код: Выделить всё

trid -> text.txt
Аватара пользователя
diakov

Re: .: NSIS - все вопросы :. часть 2.

Сообщение diakov »

Цитата kotkovets:



главное знать, сколько байтов нужно прочитать
.: NSIS - все вопросы :. часть 2.




А как это узнать, если необходимо будет распознавать разнообразные расширения ?
Ответить

Вернуться в «Автоматическая установка приложений»