[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 61
Аватара пользователя
CyberMaster

Re: [архив].: NSIS - все вопросы :.

Сообщение CyberMaster »

Привет!



На днях развлекался с nsis и наткнулся на интересную особенность. Есть
пример
, как создавать url ссылку. Запускаем первый раз - все нормально работает. Второй раз меняем адрес ссылки, например



Код:

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

....
!insertmacro "CreateURL" "Nsis Website" "http://nsis.sourceforge.net/Create_Internet_Shorcuts_during_installation" "Visit NSIS Website"
...

и получаем ссылку на первый адрес, т.е. на
http://nsis.sf.net
. Есть какие-нибудь предположения, что надо сделать, чтобы ссылка обновлялась?
Аватара пользователя
Belial4444

Re: [архив].: NSIS - все вопросы :.

Сообщение Belial4444 »

Цитата Caymanroc:



чтобы ссылка обновлялась?
[архив].: NSIS - все вопросы :.




Дело в проводнике, что именно не знаю, достаточно изменить

имя url-ярлыка:



Код:

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

!insertmacro "CreateURL" "Web" "http://nsis.sourceforge.net/Create_Internet_Shorcuts_during_installation" "Visit NSIS Website"
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

URL-файл перед повторным созданием удалять пробовали?
Аватара пользователя
Tolian

Re: [архив].: NSIS - все вопросы :.

Сообщение Tolian »

Цитата hb860:



URL-файл перед повторным созданием удалять пробовали?
[архив].: NSIS - все вопросы :.




hb860 я пробЫвал скриптом, и все также, если ручками удалить, то бывает спустя некоторое время обновится ссылка.

или сразу обновится ссылка после перезагрузки проводника...$RefreshShellicon не выручает.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Tolian

Этот макрос читает секции из *.ini файла настроек и помещает результат в переменную:



Код:

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

!insertmacro INSTALLOPTIONS_READ $R5 "Dialog.ini" "Field 1" "State"

Точно также как ReadIniStr :



Код:

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

ReadINIStr $R5 "$PLUGINSDIR\Dialog.ini" "Field 1" "State"
Аватара пользователя
Tolian

Re: [архив].: NSIS - все вопросы :.

Сообщение Tolian »

что вводить можно в $R5? у меня ошибку дает
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Как в NSIS реализовать функцию проверки установленного ПО из MSI, по его коду ?

К примеру, в Setup Factory проверку установлен ли VC++2005sp1 я проверяю с помощью :



Код:

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

-- Get the product's installed state.
nState = MSI.QueryProductState("{837b34e3-7c30-493c-8f6a-2b0f04e2912c}");
if (INSTALLSTATE_DEFAULT ~= nState) then
   result = File.Run(SessionVar.Expand("%TempLaunchFolder%\\vc.exe"), "", "", SW_SHOWNORMAL, false);
end

Каким будет аналог этого скрипта в NSIS ?



И ещё вопрос : Каким образом лучше реализовать поиск перед установкой, запущенного процесса (программы) и его закрытия в случае обнаружения ?

Обнаружил несколько плагинов вроде как для этих целей, но сомневаюсь...
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Цитата MKN:



Как в NSIS реализовать функцию проверки установленного ПО из MSI, по его коду ?
[архив].: NSIS - все вопросы :.




Я проверку по реестру делаю, на примере 7-zip упакованный в MSI:



Код:

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

OutFile OutFile.exe
Section
 ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{23170F69-40C1-2701-0916-000001000000}" "DisplayName"
 StrCmp $0 "" +3 #если в переменной $0  "какое то значение" , то выполняем ниже 2 строчки кода
 MessageBox MB_ICONINFORMATION|MB_OK "$0 установлен!"
 Quit
 MessageBox MB_ICONINFORMATION|MB_OK "7-zip не установлен!"
SectionEnd

0916 - версия 7-zip. Эти цифры меняются в зависимости от версии.

Чтобы сделать проверку на все версии, делаю цикл.
Аватара пользователя
Tolian

Re: [архив].: NSIS - все вопросы :.

Сообщение Tolian »

Цитата MKN:



И ещё вопрос : Каким образом лучше реализовать поиск перед установкой, запущенного процесса (программы) и его закрытия в случае обнаружения ?
[архив].: NSIS - все вопросы :.




На примере плагина
http://nsis.sourceforge.net/Processes_plug-in




Код:

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

Function .onInit
 Processes::FindProcess "Explorer.exe"
 Pop $R0
 StrCmp $R0 1 0 +3
 MessageBox MB_OK "Explorer запущен($R0)"
 Processes::KillProcess "Explorer.exe"
 StrCmp $R0 0 0 +2
 MessageBox MB_OK "Explorer не запущен($R0)"
FunctionEnd

предпочитаю
http://nsis.sourceforge.net/NsProcess_plugin



читать дальше »




Код:

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

OutFile OutFile.exe
Function .onInit
 nsProcess::_FindProcess /NOUNLOAD "explorer.exe"
 Pop $R0
 StrCmp $R0 0 0 +3
 MessageBox MB_OK "$R0 | Explorer запущен"
 nsProcess::_KillProcess /NOUNLOAD "explorer.exe"
 StrCmp $R0 603 0 +2
 MessageBox MB_OK "$R0 | Explorer не запущен"
 Quit
FunctionEnd
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

kotkovets, подскажи пожалуйста :

Что означает в скриптах +2 , +3 (и где про это узнать подробнее и по русски ) ?



И как организовать после определения наличия (или отсутствия) установленного ПО ? :



1. Если ПО не установлено, то запуск необходимого приложения из $Temp с последующим удалением исходного файла запуска после установки.

(Если установлено - продолжение установки без всяких сообщений.)



и такой вариант :



2. Если ПО не установлено, то вызов сообщения : "Приложение такое то не установлено". И в нём же (в его окне) выбор кнопок : "Установить ?" (А затем его запуск) " Отмена" и " Продолжить установку".
Ответить

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