|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата sawe:
|
|
------- Отправлено: 07:37, 09-07-2011 | #1321 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Если делаю так:
Function ExecAppFile !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\KMPlayer.exe" "-firstrun" "$INSTDIR" "" FunctionEnd ; !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\KMPlayer.exe" "-firstrun" "$INSTDIR" "" то ошибка такая: !insertmacro: end of _UAC_IncL Error: command goto not valid outside Section or Function Error in macro UAC_AsUser_ExecShell on macroline 2 Error in script "D:\NSIS\kmplayer-new.nsi" on line 102 -- aborting creation process Если делаю так: Function ExecAppFile !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\KMPlayer.exe" "-firstrun" "$INSTDIR" FunctionEnd ; !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\KMPlayer.exe" "-firstrun" "$INSTDIR" то ошибка такая: !insertmacro: UAC_AsUser_ExecShell !insertmacro: macro "UAC_AsUser_ExecShell" requires 5 parameter(s), passed 4! Error in script "D:\NSIS\kmplayer-new.nsi" on line 96 -- aborting creation process А что касается примеров, то там так: !insertmacro UAC_AsUser_ExecShell "" "calc.exe" "" "" "" И что я из этого примера должен уяснить? |
------- Последний раз редактировалось wolkow70, 09-07-2011 в 10:56. Отправлено: 08:42, 09-07-2011 | #1322 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста на примере, каким образом запускать (устанавливать) и удалять сервисы (службы) с помощью
NSIS SERVICE LIBRARY — servicelib.nsh http://nsis.sourceforge.net/NSIS_Service_Lib ? Или, может лучше использовать для этого NSIS Simple Service Plugin http://nsis.sourceforge.net/NSIS_Simple_Service_Plugin ? |
Отправлено: 12:40, 09-07-2011 | #1323 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата MKN:
; Задаваемые типы параметров: ; Действие - создание, удаление, запуск, остановка, пауза ; ; Имя - имя сервиса ; ; Параметры - Задаваемые параметры действия; пример: var1=value1;var2=value2;.... ; (разделять задаваемые параметры ';') ; Действия: ; create - создает новую службу windows ; Параметры create: ; path - путь для исполняемого файла службы ; autostart - автоматически запускать с системой IE. 1|0 (1 - запускать, 0 - нет) ; interact - взаимодействие с рабочим столом IE. 1|0 (1 - да, 0 - нет) ; depend - зависимости служб ; user - имя пользователя запускающий службу ; password - пароль пользователя запускающий службу ; display - отображаемое имя службы консоли ; description - Описание службы ; starttype - Тип запуска ; servicetype - Тип сервиса ; ; delete - Удаление службы windows ; start - запустить службу windows, если остановлена ; stop - Остановка запущенного сервиса (службы) windows ; pause - Приостановка работающей службы windows ; continue - возобновление работы службы если приостановлено ; installed - установка службы ; Параметры installed: ; action - Если возвращает истину (true = 1), то вызывает указанное действие ; running - выполнить запуск службы ; Параметры running: ; action - Если возвращает истину (true = 1), то вызывает указанное действие ; status - проверка статуса службы ; Пример: (создаем службу) ; метод 1: ; Push "Действия" Push "create" ;помещаем значения в стек ; Push "Имя" Push "MKN" ; Push "Параметры" Push "path=$INSTDIR\service.exe;autostart=1;description=MKN Service;" ; Call Service Call Service ; Pop $0 Pop $0 ;возвращается значение со стека в $0 - успешно или нет ; ; метод 2: ; !insertmacro SERVICE "create" "MKN" "path=$INSTDIR\service.exe;autostart=1;description=MKN Service;" ; |
|
------- Последний раз редактировалось kotkovets, 09-07-2011 в 15:54. Отправлено: 15:10, 09-07-2011 | #1324 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать kotkovets,
В общем бросил я возиться с этим UAC. Спасибо Вам за то, что научили меня делать генератор ответов. В связи с этим у меня возник вопрос: [DIRECTORY] INSTALLDIR=Е:\Program Files\The KMPlayer [Sections] StartMenu=1 Desktop=1 QuickLaunch=1 Путь установки прописывается абсолютный. А буква диска может быть разной. Почему то не срабатывает механизм использования относительного пути в данном случае. У меня две системы на диске : С:\ Windows7 E:\ Windows XP Пробовал устанавливать сборку на обеих системах в автоматическом режиме. В обоих случаях распаковка идет в папку Е:\Program Files\The KMPlayer, хотя сама инсталляция производится в первом случае на Windows7. Сейчас еще раз просмотрел скрипт. Вроде не должно такого быть. Все, что нужно есть... !include "WordFunc.nsh" !include "TextFunc.nsh" Var GMODE Var INIFILE Var SysDrive Var SUCCES_SECTION Var WindowCaption Function PREINSTFILES ${If} $GMODE = 1 WriteINIStr "$INIFILE" "DIRECTORY" "INSTALLDIR" "$INSTDIR" ${EndIf} FunctionEnd Section "!${PRODUCT_NAME}" Install SectionIn 1 2 3 RO ${If} $GMODE = 0 ${AndIf} ${Silent} ${AndIf} ${FileExists} "$INIFILE" ClearErrors ReadINIStr "$R0" "$INIFILE" "DIRECTORY" "INSTALLDIR" ${WordReplace} $R0 "%programfiles%" "$PROGRAMFILES" "+" $R1 ${WordReplace} $R1 "%windir%" "$WINDIR" "+" $R0 ${WordReplace} $R0 "%appdata%" "$APPDATA" "+" $R1 ${WordReplace} $R1 "%systemdrive%" "$SysDrive" "+" $R0 StrCpy $INSTDIR $R0 ${EndIf} ${If} $GMODE = 0 SetOutPath "$INSTDIR" |
------- Последний раз редактировалось wolkow70, 09-07-2011 в 18:52. Отправлено: 17:53, 09-07-2011 | #1325 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
|
|
------- Отправлено: 20:09, 09-07-2011 | #1326 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
подобраться не дотягиваю. Или на этапе записи? WriteINIStr "$INIFILE" "DIRECTORY" "INSTALLDIR" "$INSTDIR" или на этапе чтения и интерпретации ReadINIStr "$R0" "$INIFILE" "DIRECTORY" "INSTALLDIR" ${WordReplace} $R0 "%programfiles%" "$PROGRAMFILES" "+" $R1 |
|
------- Отправлено: 21:58, 09-07-2011 | #1327 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
Function PREINSTFILES ;это функция будет выполнена только в режиме генератора ${If} $GMODE = 1 ;режим генератора StrCpy `$R0` "$INSTDIR" ${WordReplace} $R0 ":\Program Files" "%programfiles%" "+1" `$R1` StrCmp `$R1` `$R0` +2 StrCpy `$R1` `$R1` "" 1 ${WordReplace} `$R1` ":\Windows" "%windir%" "+1" `$R0` StrCmp `$R0` `$R1` +2 StrCpy `$R0` `$R0` "" 1 ${WordFind} `$R0` "Application Data" "E+2*}" `$R1` StrCmp $R1 1 +2 StrCpy `$R0` "%appdata%$R1" WriteINIStr "$INIFILE" "DIRECTORY" "ISTALLDIR" "$R0" ;создаем файл конфигурации ${EndIf} FunctionEnd В зависимости от SetShellVarContext current|all > %appdata% > возвращает путь к профилю текущего пользователя или всех пользователей. Для других системных переменных подумайте, есть в папке Examples скрипт WordFunc.nsi, где можно потренироваться c строковыми функциями подставляя свои значения строк и настроек парсирования строк. |
|
------- Отправлено: 23:39, 09-07-2011 | #1328 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MKN:
Цитата MKN:
Ну впринципе, на страничке описания плагина всё расписано подробно...ничего сложного я думаю "[name_of_service]" указывается системное имя службы, как название раздела службы в реестре (не отображаемое) |
||
------- Отправлено: 08:42, 10-07-2011 | #1329 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать kotkovets,
Хочу посоветоваться по поводу известного нам макроса ассоциации файлов. Как известно Xp не видит HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\${extenstion}\UserChoice" В тоже время некоторые программы ведут себя не грамотно и пописывают ассоциации в HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" "$ClassName" (например KMPlayer), что создает проблемы со сменой ассоциаций при установке других программ. Немного подумав сделал так в макросе: !macro RegisterExtension extenstion StrCpy $ClassName "VLC.${extenstion}" WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "" "$ClassName" GetVersion::WindowsName Pop $R0 StrCmp $R0 "XP" 0 noxp WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" "$ClassName" noxp: DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$ClassName" ; WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell" "" "Open" WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\Open" "" "Воспроизвести" WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\Open\command" "" "$OpenCommand" ; ; !macroend HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" "$ClassName", что бы затереть запись другой программы. На Cемерке и Viste такой проблемы нет, так как UserChoice имеет приоритет, а в ХР не присходит смена ассоциаций. Как Вы считаете разумно ли так поступить, или есть более красивое решение? |
------- Отправлено: 15:01, 11-07-2011 | #1330 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - 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 |
|