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

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2.

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

Аватара для kotkovets

Ветеран


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


Конфигурация

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


Изменения
Автор: kotkovets
Дата: 07-06-2020
Описание: NSIS 3.05


Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения.


Описание:
читать дальше »
NSIS (Nullsoft Scriptable Install System) - профессиональная система для создания инсталляторов в среде Windows с октрытым исходным кодом. При своем малом размере система очень гибкая, и при с широкими возможностями. Генерируемый ею инсталлятор также имеет очень маленький размер и идеально подходит для распространения продукта через Интернет.


Текущая версия: NSIS 3.05 от 15 декабря 2019 года
Скачать | Архив сборок версии

Первая часть этой темы
Скачать первую часть этой темы одним архивом

ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов:
Справочник по NSIS - создан силами нашего сообщества.
Руководство пользователя. Перевод – Поляков А.В, зеркало

Документация

Утилиты разработчика
Расширение функциональности

Примеры скриптов на нашем форуме
Скрипт NSIS для перепаковки AIMP2+Сборки
Тема для Notepad++(пример парсинга XML)

Достоинства
читать дальше »


◦ Очень маленький размер установочного блока (около 34 Кбайт)
◦ zlib, bzip2 и LZMA-сжатие
◦ Гибкая система скриптов (спецально разработанная для инсталляторов)
◦ Поддержка многоязычности, точнее 53 языка, есть возможность ввода нового языка
◦ Поддержка плагинов
◦ Скрипт Препроцессор
◦ Создание Web-инсталляторов


Ещё немного полезной информации:
читать дальше »

▫ История создания установщика

NSIS создан как альтернатива InstallShield, предназначенного для коммерческих продуктов.

NSIS был создан для распространения Winamp. Он базируется на предыдущем продукте Nullsoft — PiMP (plugin Mini Packager), иначе известным как SuperPiMP. После версии 2.0a0, проект был перемещён на SourceForge.net, где к работе над ним присоединились и сторонние разработчики. NSIS 2.0 был выпущен в свет 2 года спустя.

NSIS версии 1 был очень похож на классический Windows Installer, но он был более управлемым с помощью скриптов и поддерживал другие форматы сжатия. NSIS версии 2 поддерживает новый графический интерфейс пользователя, LZMA-сжатие, многоязычность и имеет хорошую систему плагинов.

Версия 2.01 была первой версией, поддерживающей компиляцию на любой из POSIX-платформ. Это позволило создавать Windows-инсталляторы на GNU/Linux и FreeBSD без использования эмулятора Wine. На данный момент поддерживается компиляция только для Windows.

▫ Описание

Компилятор NSIS — программа makensis — компилирует скрипты в исполняемый код. Каждая строчка скрипта содержит одну команду. Пример:
Код: Выделить весь код
 # Пример скрипта
 Name "Example1"
 OutFile "example1.exe"
 InstallDir "$PROGRAMFILES\Example1"
 Page Directory
 Page InstFiles
 Section
   SetOutPath $INSTDIR
   File ..\makensis.exe
 SectionEnd

Modern User Interface

В версии 2.0 был введён новый графический интерфейс пользователя, названный Modern UI (MUI). MUI очень похож на интерфейс мастеров, он поддерживает splash screen, выбора языка, выбор компонентов для установки и более широкие возможности настройки по сравнению со своим предшественником. Пример:
Код: Выделить весь код
 # Пример скрипта с Modern UI
 !include MUI.nsh
 Name "Example 2"
 OutFile Example2.exe
 !insertmacro MUI_PAGE_WELCOME
 !insertmacro MUI_PAGE_LICENSE "license.rtf"
 !insertmacro MUI_PAGE_DIRECTORY
 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_PAGE_FINISH
 !insertmacro MUI_LANGUAGE "English"
 !insertmacro MUI_LANGUAGE "German"
 !insertmacro MUI_LANGUAGE "French"
 Section "Extract makensis"
  SetOutPath $INSTDIR
  File ..\makensis.exe
 SectionEnd
NSIS может быть расширен при помощи плагинов, которые могут быть написаны на C++, Си, и Delphi. Плагины могут быть использованы для улучшения функциональности и интерфейса инсталлятора. Плагины могут быть вызваны в любой части кода NSIS скрипта.

С пакетом NSIS поставляются несколько плагинов, позволяющих добавлять новые страницы, заменять фоновые изображения, скачивать файлы из Интернета, выполнять математические вычисления, обновлять файлы и многое другое.

▫ Программы, использующие NSIS


◦ Антивирус Касперского
◦ Qip
◦ 3DNA Desktop
◦ 7-Zip
◦ ATI Display Driver
◦ CDex
◦ Dev-C++
◦ DivX
◦ eMule FileZilla
◦ Google Picasa
◦ Google Talk
◦ Intel C (компилятор)
◦ IrfanView
◦ LightAllow
◦ LyX
◦ Miranda IM Mozilla Firefox 2.0
◦ NASA World Wind
◦ Notepad++
◦ OpenOffice.org для Windows
◦ Pidgin
◦ VLC Player
◦ Winamp

▫ Чем я могу распаковать инсталлятор, созданный в NSIS?

В настоящее время инсталляторы NSIS не могут быть полностью декомпилированы. Сам инсталлятор не содержит в себе никаких функций для того, чтобы извлечь сценарий и/или файлы без инсталляции. Это - выбор разработчика, доступны ли исходный текст и/или файлы для инсталлятора для публики или нет. Есть, однако, внешние инструментальные средства, которые позволяют это сделать. 7-zip поддерживает частичную распаковку NSIS инсталляторов с алгоритмом сжатия lzma или bzip. Так же существует мульти-архивный плагин для TotalCommander.
Небольшая заметка для разработчиков: используйте DCryptDll, если хотите скрыть некоторые файлы в вашей инсталляции.


-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 09-12-2012

 

Пользователь


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

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


Цитата K.A.V.:
...Не особо вникал »
Оказывается, не так все и просто. А я думал, что это я вникал...
Спасибо еще раз.

Возник вопрос по удалению папки установленной программы.
Например, файлы устанавливаются в C:\Program Files (x86)\Aleo Software\Flash Intro and Banner Maker\ = $INSTDIR, по умолчанию.
Для того, чтобы удалить папку [Aleo Software], приходится устанавливать (как написано в Руководстве) текущий рабочий каталог, являющийся родителем папки [Aleo Software], т.е. C:\Program Files (x86):
Код: Выделить весь код
SetOutPath "$PROGRAMFILES"
        RMDir /r "$PROGRAMFILES\Aleo Software"
А если я не знаю, куда пользователь захочет установить программу? Нужно будет извлекать пользовательский путь, отсекать каталог установки, оставляя путь к "родительской" папке и назначать как SetOutPath. Или я опять чего-то не учитываю (несу чушь)?

Отправлено: 09:26, 03-06-2015 | #1651



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата Kopejkin:
Для того, чтобы удалить папку [Aleo Software], приходится устанавливать (как написано в Руководстве) текущий рабочий каталог, являющийся родителем папки [Aleo Software] »
Не сказано там такого Там говорится, что вы не сможете удалить папку, которая установлена сейчас "текущим каталогом"
Так, например, удаление не сработает:
Код: Выделить весь код
SetOutPath $TEMP\dir
RMDir $TEMP\dir
Хотя если указать ключ /r то содержимое папки $TEMP\dir всё-равно будет очищено полностью
Т.е. перед удалением какой-либо папки можете установить текущим каталогом левую папку, например временную папку $TEMP

Цитата Kopejkin:
Нужно будет извлекать пользовательский путь, отсекать каталог установки, оставляя путь к "родительской" папке и »
и удалять родительскую папку? Забавный инсталлер получится, если я установлю вашу программу в папку на рабочем столе, вы мне деинсталлятором потом весь рабочий стол затрёте?
Ничего отсекать/отрезать не нужно от пути установки, выполняйте действия только с $INSTDIR и не придумывайте лишнего, по-крайней мере, так безопасней для личных файлов пользователя, вам потом спасибо не скажут за удаление файлов, не относящихся к программе, запомнят ваш ник и не будут потом ставить от вас репаки

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]


Отправлено: 10:00, 03-06-2015 | #1652


Пользователь


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

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


Цитата K.A.V.:
..выполняйте действия только с $INSTDIR »
Собственно, так и делал до сих пор. Только "не аккуратненько как-то получается"

Отправлено: 21:05, 03-06-2015 | #1653


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата Kopejkin:
Только "не аккуратненько как-то получается" »
Это да, но никто пользователя и не заставляет вводить кучу путей для установки с заведомо пустыми папками, чтобы сама программа была в каких-то дебрях

В голову пришла такая идея, можно реализовать опять же циклом такую штуку: проверяем, является ли каталог пустым, начиная с $INSTDIR, если пустой - удаляем и "поднимаемся вверх" по дереву папок, делая аналогичную проверку, если папка снова пустая - снова удаляем и ползём ещё выше
разомни пальчики комбинациями ctrl+c и ctrl+v
Код: Выделить весь код
!include "FileFunc.nsh" 
!include "Logiclib.nsh"
Код: Выделить весь код
StrCpy $0 "$INSTDIR"
${While} $0 != "" ; если $0 = пустое значение, значит каталог либо с файлами, либо не существует
   ${DirState} "$0" $1 ; получаем статус директории (пустая/с файлами)
         ${If} $1 == "1" ; если с файлами, то обнуляем $0 и тем самым выходим из цикла
         ${OrIf} $1 == "-1"" ; или если папка не существует, то обнуляем $0 и тем самым выходим из цикла
         DetailPrint "папка '$0' с файлами или не существует => прекращаем проверку" 
         StrCpy $0 "" ; обнуляем переменную с путём, чтобы завершить цикл
         ${ElseIf} $1 == 0 ; если папка пустая
         RMDir "$0" ; удаляем пустую папку 
         DetailPrint "папка '$0' пустая => удаляем" 
         ${GetParent} "$0" $0 ; получаем родителя папки, которую удалили, записываем значение в эту же переменную
         DetailPrint "следующая папка  => '$0'" 
         ${EndIf}           
${EndWhile}
Конечно же, прописывать нужно самым последним действием в секции деинсталлятора, чтобы при начале цикла папка $INSTDIR была пустой, а то цикл сразу завершится...

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:40, 03-06-2015 | #1654


Пользователь


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

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


Цитата K.A.V.:
если я установлю ... на рабочем столе, ... деинсталлятором ... весь рабочий стол затрёте? »
Я озаботился "безопасностью файлов" пользователя и сначала сделал так:

Код: Выделить весь код
Function .onVerifyInstDir
Var /Global MyPath
StrCpy $MyPath "$PROGRAMFILES\Aleo Software\Flash Intro and Banner Maker"
StrLen $0 $MyPath
StrCpy $0 $INSTDIR $0
StrCmp $0 $MyPath PathGood 0
Abort
PathGood:
FunctionEnd
Но подумал, что это будет выглядеть глупо, и решил вообще не давать пользователю никакой возможности смены пути установки. Если автор программы хочет иметь общую папку для всех своих продуктов, то почему я должен быть против этого?
В итоге, страница выбора папки установки в инсталляторе была отключена И не затрется ничего.

Отправлено: 22:27, 03-06-2015 | #1655


Аватара для WesternLight

Новый участник


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

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


Доброго времени всем! Прошу помощи - второй день только разбираю NSIS и столкнулся с, на мой взгляд, неразрешимой проблемой

Требуется в процессе работы инсталлятора создать ярлык на рабочем столе, который будет содержать следующую команду, к примеру:

Код: Выделить весь код
"C:\Program Files (x86)\Opera\launcher.exe" "http://google.com"
При этом часть:

Код: Выделить весь код
C:\Program Files (x86)\Opera\launcher.exe
будет в виде переменной и может принимать разные значения (разные браузеры). Может есть какое-то решение?

Вообще конечная цель - ярлык на рабочем столе, который будет открывать определенный URL с помощью конкретно указанного браузера, отличного от дефолтного. Может есть какой-то обходной путь?

Отправлено: 21:42, 17-06-2015 | #1656


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата WesternLight:
столкнулся с, на мой взгляд, неразрешимой проблемой »
Персонально для тех, кому лень прочитать шапку темы: Справочник по NSIS
Приходите с прочитанным справочником, кидать вам код таких простых команд - не вижу смысла

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:01, 18-06-2015 | #1657


Аватара для WesternLight

Новый участник


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

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


Цитата K.A.V.:
Приходите с прочитанным справочником, кидать вам код таких простых команд - не вижу смысла »
Почему-то думал что именно вы сразу поймете в чем кроется суть проблемы, ну, чтож...

Справочник по NSIS изучил в нужной для этого части в первую очередь (и сразу заметил некоторые неточности), много прочел в других источниках. Видимо, проблему придется описать подробнее. Мой код:

Скрытый текст
Код: Выделить весь код
; Define your application name
!define APPNAME "Полезные ссылки"
!define APPNAMEANDVERSION "Полезные ссылки 1.0"

; Main Install settings
Name "${APPNAMEANDVERSION}"
InstallDir "$PROGRAMFILES\Полезные ссылки"
InstallDirRegKey HKLM "Software\${APPNAME}" ""
OutFile "d:\Links\Полезные ссылки.exe"

; Modern interface settings
!include "MUI.nsh"
!include "LogicLib.nsh"
!include "nsDialogs.nsh"

!define MUI_WELCOMEPAGE_TITLE_3LINES

!define MUI_ABORTWARNING

!insertmacro MUI_PAGE_WELCOME
Page custom fnCustomInit fnCustomDestroy
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

; Set languages (first is default language)
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_RESERVEFILE_LANGDLL

Var Dialog
Var Label1
Var Label2
Var Label3
Var Label4
Var Label5
Var Label6
Var RadioButton1
Var RadioButton2
Var RadioButton3
Var RadioButton4
Var RadioButton5
Var Browser

Function fnCustomInit
	nsDialogs::Create 1018
	Pop $Dialog 

	;Label 1
	${NSD_CreateLabel} 0 0 100% 15u "Выберите браузер, в котором будет открываться страница $\"Полезные ссылки$\":"
	Pop $Label1

	;RadioButton 1
	${NSD_CreateRadioButton} 0 20 100% 15u "В браузере по умолчанию (рекомендуется*)"
	Pop $RadioButton1

	;Если файл есть, то создаем RadioButton 2, иначе создаем надпись, что браузер не установлен
	IfFileExists "$PROGRAMFILES\Google\Chrome\Application\chrome.exe" 0 notcreate2
	${NSD_CreateRadioButton} 0 50 100% 15u "В Google Chrome"
	Pop $RadioButton2
	Goto rb3
	notcreate2:
	${NSD_CreateLabel} 0 55 100% 15u " X   Браузер Google Chrome не установлен"
	Pop $Label2

	rb3:
	;Если файл есть, то создаем RadioButton 3, иначе создаем надпись, что браузер не установлен
	IfFileExists "$PROGRAMFILES\Mozilla Firefox\firefox.exe" 0 notcreate3
	${NSD_CreateRadioButton} 0 80 100% 15u "В Mozilla Firefox"
	Pop $RadioButton3
	Goto rb4
	notcreate3:
	${NSD_CreateLabel} 0 85 100% 15u " X   Браузер Mozilla Firefox не установлен"
	Pop $Label3
	
	rb4:
	;Если файл есть, то создаем RadioButton 4, иначе создаем надпись, что браузер не установлен
	IfFileExists "$PROGRAMFILES\Opera\launcher.exe" 0 notcreate4
	${NSD_CreateRadioButton} 0 110 100% 15u "В Opera"
	Pop $RadioButton4
	Goto rb5
	notcreate4:
	${NSD_CreateLabel} 0 115 100% 15u " X   Браузер Opera не установлен"
	Pop $Label4

	rb5:
	;Если файл есть, то создаем RadioButton 5, иначе создаем надпись, что браузер не установлен
	IfFileExists "$PROGRAMFILES\Internet Explorer\iexplore.exe" 0 notcreate5
	${NSD_CreateRadioButton} 0 140 100% 15u "В Internet Explorer"
	Pop $RadioButton5
	Goto rb6
	notcreate5:
	${NSD_CreateLabel} 0 145 100% 15u " X   Браузер Internet Explorer не установлен"
	Pop $Label5
	
	rb6:
	${NSD_CreateLabel} 0 170 100% 35u "* Браузер, выбранный по умолчанию в системе. Пользователь в любой момент может его изменить и после этого страница может перестать открываться корректно. Если это произойдет, просто запустите программу установки еще раз и выберите нужный браузер."
	Pop $Label6
	
	nsDialogs::Show
FunctionEnd

Function fnCustomDestroy

	;Состояние RadioButton 1
	${NSD_GetState} $RadioButton1 $RadioButton1
	
	;Если файл есть, то получаем состояние RadioButton 2, иначе идем далее
	IfFileExists "$PROGRAMFILES\Google\Chrome\Application\chrome.exe" 0 +2
	${NSD_GetState} $RadioButton2 $RadioButton2
	
	;Если файл есть, то получаем состояние RadioButton 3, иначе идем далее
	IfFileExists "$PROGRAMFILES\Mozilla Firefox\firefox.exe" 0 +2
	${NSD_GetState} $RadioButton3 $RadioButton3
	
	;Если файл есть, то получаем состояние RadioButton 4, иначе идем далее
	IfFileExists "$PROGRAMFILES\Opera\launcher.exe" 0 +2
	${NSD_GetState} $RadioButton4 $RadioButton4
	
	;Если файл есть, то получаем состояние RadioButton 5, иначе идем далее
	IfFileExists "$PROGRAMFILES\Internet Explorer\iexplore.exe" 0 +2
	${NSD_GetState} $RadioButton5 $RadioButton5
	
	IntCmp $RadioButton1 1 equal1 notequal1
		equal1:
			StrCpy $Browser ""
  Goto End1
		notequal1:
		
	IntCmp $RadioButton2 1 equal2 notequal2
		equal2:
			StrCpy $Browser "$PROGRAMFILES\Google\Chrome\Application\chrome.exe"
  Goto End1
		notequal2:
	
	End1:
	
	FunctionEnd

Section "Полезные ссылки" Section1

	;Set Section properties
	SetOverwrite on

	;Set Section Files and Shortcuts
	SetOutPath "$INSTDIR\"
	File "Links\fs.ico"
	
	;Создание файлов
	
	SetShellVarContext all
	CreateShortCut "$DESKTOP\Полезные ссылки.lnk" "$Browser http://google.com" "" "$INSTDIR\fs.ico" "0"
	CreateDirectory "$SMPROGRAMS\Полезные ссылки"
	CreateShortCut "$SMPROGRAMS\Полезные ссылки\Полезные ссылки.lnk" "$Browser http://google.com" "" "$INSTDIR\fs.ico" 0
	CreateShortCut "$SMPROGRAMS\Полезные ссылки\Uninstall.lnk" "$INSTDIR\uninstall.exe"
	
SectionEnd

Section -FinishSection

	WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
	WriteUninstaller "$INSTDIR\uninstall.exe"

SectionEnd

;Uninstall section
Section Uninstall

	;Remove from registry...
	DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
	DeleteRegKey HKLM "SOFTWARE\${APPNAME}"

	;Delete self
	Delete "$INSTDIR\uninstall.exe"

	;Delete Shortcuts
	SetShellVarContext all
	Delete "$DESKTOP\Полезные ссылки.lnk"
	Delete "$SMPROGRAMS\Полезные ссылки\Полезные ссылки.lnk"
	Delete "$SMPROGRAMS\Полезные ссылки\Uninstall.lnk"

	;Clean up Полезные ссылки
	Delete "$INSTDIR\Полезные ссылки.url"
	Delete "$INSTDIR\fs.ico"

	;Remove remaining directories
	RMDir "$SMPROGRAMS\Полезные ссылки"
	RMDir "$INSTDIR\"

SectionEnd

;On initialization
Function .onInit

	!insertmacro MUI_LANGDLL_DISPLAY
	
	 ;Предотвращает множественость запуска инсталлятора
	 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "$(^Name)") i .r1 ?e'
	 Pop $R0
	 ${IfNot} $R0 == 0
		 MessageBox MB_OK|MB_ICONEXCLAMATION "Вы уже запустили установку $(^Name)! Проверьте открытые окна!"
		 Abort
	 ${EndIf}
	
FunctionEnd

; eof

Первый вопрос риторический - я читал ваш справочник? Отвечать не нужно. А второй вопрос, за которым я обратился к мудрости участников этого форума заключается в том, что команды выделенные жирным, при выборе пункта "В Google Chrome" не создают ярлык на рабочем столе, у которого в свойствах в поле объект будет присутствовать следующая строка (обратите внимание на кавычки):

Код: Выделить весь код
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "http://google.com"
Мало того, что все команды попадают только в одни кавычки "" (я пробовал ставить дополнительные кавычки, экранируя их - не помогло), которые объединяют путь к исполняемому файлу с URL, так еще из URL удаляются двоеточие и слэши. Как следствие, такой ярлык не выполняет своего назначения - открыть указанную страницу в выбранном браузере, т.е. попросту не работает. Вот и прошу помощи...

Отправлено: 17:32, 18-06-2015 | #1658


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата WesternLight:
Почему-то думал что именно вы сразу поймете в чем кроется суть проблемы »
Почему то думал, что вы вообще не читали справочник, раз задаёте вопрос в стиле "как использовать переменную в команде создания ярлыка", попробуйте перечитать ваше сообщение от моего лица, как поставили вопрос - так его и поняли, такой ответ и дали

Цитата WesternLight:
я читал ваш справочник? Отвечать не нужно »
Может, и читали, утверждать наверняка не буду, но то, что читали невнимательно - это факт

Цитата WesternLight:
не создают ярлык на рабочем столе, у которого в свойствах в поле объект будет присутствовать следующая строка »
Ну и правильно, что не создаёт, т.к. такого файла не существует на диске, к какому файлу ярлык то будет создаваться?

Ещё раз откройте описание команды CreateShortCut и прочтите её описание
Цитата Справочник по NSIS:
Расположение_ярлыка.lnk Путь_до_файла.exe [параметры_запуска
1-ый параметр
Путь до папки ярлыка+его имя+расширение lnk

2-ой параметр
Путь до файла, который существует на диске, к которому создаётся ярлык

3-тий параметр
параметры запуска

В вашем случае, адрес сайта - это параметр запуска
Код: Выделить весь код
CreateShortCut "$DESKTOP\Полезные ссылки.lnk" "$Browser" "http://google.com" "$INSTDIR\fs.ico" "0"
Цитата WesternLight:
Мало того, что все команды попадают только в одни кавычки "" (я пробовал ставить дополнительные кавычки, экранируя их - не помогло), которые объединяют путь к исполняемому файлу с URL »
Ответ дал выше - путь к файлу, к которому создаётся ярлык и адрес сайта - 2 разных параметра в команде создания ярлыка, 2ой параметр для пути к файлу и 3ий параметр как "параметры запуска приложения"

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:00, 18-06-2015 | #1659


Аватара для WesternLight

Новый участник


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

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


Спасибо!!! Просто в вашем справочнике про создание ярлыка очень мало написано - там упоминаются параметры запуска, но нет примера использования... Не сообразил, что URL нужно передавать как параметр... Еще раз спасибо!

Отправлено: 19:10, 18-06-2015 | #1660



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 dimadr Наборы обновлений для Windows XP/2003/Windows 7 267 14-02-2020 08:25
[архив].: NSIS - все вопросы :. kotkovets Автоматическая установка приложений 3387 09-12-2012 11:56
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 jameszero Наборы обновлений для Windows XP/2003/Windows 7 1491 22-07-2011 22:42
Выбор|модернизация процессора .:[все вопросы]:. Часть I Myxa Выбор отдельных компонентов компьютера и конфигурации в целом 1845 01-01-2011 19:18
Вопросы по создателю инсталляций NSIS MaxDELETE Программное обеспечение Windows 14 04-07-2007 10:01




 
Переход