|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать Здравствуйте
Уже мозг сломал, пока ничего не могу придумать, Может вы что подскажете. Есть такая задача. Регулярно создается большое количество инсталлеров. Некоторые могут отличаться сильно по секциям и страницам, а в некоторый отличие только в значении переменных. к примеру отличаються только названием программы и описанием define PRODUCT_NAME "name test" переменные задаются при генерации скрипта через ключ /D. Стал вопрос можно ли на этот тип инсталлеров сделать один типовой а остальные данные брать из вне при установке программы. скажем читать черз ini файл? пробовал в функции .onInit вызвать другую функцию и прочитать эти данные ReadINIStr $R1 "$TEMP\settings.ini" "PRODUCT_NAME" "Text" !undef PRODUCT_NAME !define PRODUCT_NAME $R1 но это работает не так как надо значение переменной вроде заменяться MessageBox MB_OK|MB_ICONSTOP "${PRODUCT_NAME}" выводит именно то значение что прописано в settings.ini но на страницах где должно отображаться PRODUCT_NAME отображается 0. реально ли выполнить задачу под эти требования? если да буду раз советам с ув. Ярослав |
Отправлено: 12:16, 25-04-2011 | #1111 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 90
|
Профиль | Отправить PM | Цитировать yyv
Не думаю что такое возможно, хотя подождем, что скажет на это гуру kotkovets А вообще, ИМХО, в таких случаях проще все константы которые нужно изменить запихнуть в отдельный файл и там их изменять. |
------- Отправлено: 12:48, 25-04-2011 | #1112 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать yyv,
Можно сделать примерно так (пример на этапе инсталляции): 1. Команды не в коем случае не перемещать - здесь очень важна последовательность действий! 2. Константы иницилизируем, только в функции OnInit, потом будет поздно и значения констант определяем только после отработки макроса PRODUCTNAME и следовательно, объявляем значения констант после макроса - банальная последовательность действий 3. Это извращение, проще хранить значения в переменных. причем в данном случае в объявленных переменных, может быть покажу, когда именно, в какой момент нужно делать - здесь вся загвоздка. !include "MUI2.nsh" !include "Logiclib.nsh" OutFile file.exe !macro PRODUCTNAME ReadINIStr $R1 "$EXEDIR\settings.ini" "PRODUCT_NAME" "Text" ${IfNot} $R1 == "" StrCpy $R1 "$R1" ${Else} ClearErrors StrCpy $R1 "это NSIS ${NSIS_VERSION}" ;если $R1 = "пустому значению", то назначаем по умолчанию значение ${EndIf} !macroend !define MUI_WELCOMEPAGE_TITLE "$R1" !define PRODUCT_NAME "$R1" Caption "$R1" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" ShowInstDetails show Function .OnInit !insertmacro PRODUCTNAME FunctionEnd Section "" MessageBox MB_ICONINFORMATION|MB_OK ${PRODUCT_NAME}$\n$\r$R1 SectionEnd |
------- Последний раз редактировалось kotkovets, 25-04-2011 в 18:24. Отправлено: 13:46, 25-04-2011 | #1113 |
Пользователь Сообщения: 58
|
Профиль | Отправить PM | Цитировать спасибо это вроде работает.
надо будет еще тестировать Цитата kotkovets:
там перед фунцией идет куча проверок типа т.е. в зависимости от того есть или нет константа показывать или нет страницу. из за этого получается много инсталеров. вот решили попробовать сделать один а странницы показывать или нет с ини файлика вытягивать данные |
|
Отправлено: 11:43, 26-04-2011 | #1114 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата yyv:
|
|
------- Отправлено: 13:06, 26-04-2011 | #1115 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать kotkovets,
Подскажите, плиз, что нужно добавить в данный макрос, что бы в контекстном меню файлов появилось Открыть в FastStone Image Viewer. !macro RegisterExtension extenstion ContentType PerceivedType ClassName DefaultIcon OpenCommand WriteRegStr HKCR "${extenstion}" "" "${ClassName}" WriteRegStr HKCR "${extenstion}" "PerceivedType" "${PerceivedType}" WriteRegStr HKCR "${extenstion}" "Content Type" "${ContentType}" WriteRegStr HKCR "${ClassName}\DefaultIcon" "" "${DefaultIcon}" WriteRegStr HKCR "${ClassName}\shell\open\command" "" "${OpenCommand}" !macroend Пробовал сам добавить таким макаром: var CommandName !macro RegisterExtension extenstion ContentType PerceivedType ClassName DefaultIcon OpenCommand CommandName WriteRegStr HKCR "$ClassName\shell\open" "" "CommandName" StrCpy $CommandName "Открыть в FastStone Image Viewer" !insertmacro RegisterExtension ".bmp" "image/bmp" "image" "FastStone.bmp" "$OUTDIR\FSIcons.db,0" $OpenCommand $CommandName Не работает вариант! |
------- Отправлено: 17:15, 26-04-2011 | #1116 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 18:17, 26-04-2011 | #1117 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
Сейчас попробовал применить другой макрос, сделал так: !macro RegisterExtension extenstion StrCpy $ClassName "FastStone.${extenstion}" WriteRegStr HKCR ".${extenstion}" "" "$ClassName" WriteRegStr HKCR "$ClassName\shell\open" "" "Открыть в FastStone Image Viewer" WriteRegStr HKCR "$ClassName\shell\open\command" "" "$OpenCommand" DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$ClassName" ${Switch} ${extenstion} ${Case} "BMP" StrCpy $IconIndex 0 WriteRegStr HKCR "$ClassName" "" "FastStone BMP File" ${Break} ${Case} "PNG" StrCpy $IconIndex 7 WriteRegStr HKCR "$ClassName" "" "FastStone PNG File" ${Break} ${Case} "JPG" StrCpy $IconIndex 4 WriteRegStr HKCR "$ClassName" "" "FastStone JPG File" ${Break} ${EndSwitch} WriteRegStr HKCR "$ClassName\DefaultIcon" "" "$IconFile,$IconIndex" EndMacro: !macroend Section "!${PRODUCT_NAME}" sec01 бла-бла StrCpy $OpenCommand "$\"$OUTDIR\FSViewer.exe$\" $\"%1$\"" StrCpy $IconFile "$INSTDIR\FSIcons.db" SectionGroup "Ассоциация файлов" Sec06 ; Section "BMP" BMP SectionIn 1 2 !insertmacro RegisterExtension ".bmp" SectionEnd Section "JPG" JPG SectionIn 1 2 !insertmacro RegisterExtension ".jpg" SectionEnd Почему то в реестре расширения регистрируются с двумя точками ..bmp ..jpg и т.д |
|
------- Последний раз редактировалось wolkow70, 26-04-2011 в 18:33. Отправлено: 18:27, 26-04-2011 | #1118 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
Разобрался, все пока получается....!!!!! |
|
------- Отправлено: 19:16, 26-04-2011 | #1119 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать WriteRegStr HKLM "SOFTWARE\BurnAware\Install" "InstallEntry" "?"
как прописать выше этой строчки, чтобы заместь "?" было полное имя компьютера из HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" |
Отправлено: 13:56, 01-05-2011 | #1120 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|