Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   Передача пути через переменную в NSIS (http://forum.oszone.net/showthread.php?t=241089)

Dezmont777 22-08-2012 01:20 1974376

Передача пути через переменную в NSIS
 
Доброй ночи. Раньше не имел дела с командной строкой, но сейчас решил сделать себе маленький скрипт тихой установки для небольшой подборки программ.
Код:

@echo off
set mydir="D:\Program Files\"
pause
IF NOT EXIST %mydir%AntRenamer antrenamer2_install.exe /VERYSILENT /DIR=%mydir%AntRenamer
IF NOT EXIST %mydir%XnView XnView-win.exe /VERYSILENT /DIR=%mydir%XnView
IF NOT EXIST %mydir%Notepad++ npp.6.1.6.Installer.exe /S /D=%mydir%Notepad++
IF NOT EXIST %mydir%Paint.NET Paint.NET.3.5.10.Install.exe /auto "TARGETDIR=%mydir%Paint.NET"

В общем для Inno (XnView,AntRenamer) всё нормально устанавливается, если указана переменная. Notepad++ и Paint.NET не устанавливаются, если путь указан с использованием переменной. Если указать напрямую:
/D=D:\Program Files\Notepad++ и "TARGETDIR=D:\Program Files\Paint.NET", то всё работает нормально. (((
Подскажите пожалуйста, как поправить?

K.A.V. 22-08-2012 11:05 1974528

Цитата:

Цитата Dezmont777
Подскажите пожалуйста, как поправить? »

1. Уберите кавычки из переменной "mydir"
2. Заключите в кавычки путь определяемой директории

Код:

set mydir=C:\Program Files\
IF NOT EXIST "%mydir%Notepad++" "npp.6.1.6.Installer.exe" /S /D=%mydir%Notepad++


Dezmont777 22-08-2012 20:00 1974902

K.A.V., спасибо большое, но Ваш вариант не работает. Если Вы тестировали свой вариант, и он работает, то это потому, что по умолчанию NP++ устанавливается на системный диск. И если в параметре /D присутствуют какие-нибудь ошибки, то он автоматом ставится в C:\Program Files\.

K.A.V. 22-08-2012 20:06 1974905

Dezmont777, у вас был полный путь, я тестировал с таким же, вот и всё

Что мешает указать переменную программной директории?

Код:

@echo off
set mydir=%ProgramFiles%\
IF NOT EXIST "%mydir%Notepad++" "npp.6.1.6.Installer.exe" /S /D=%mydir%Notepad++


Dezmont777 23-08-2012 00:27 1975060

K.A.V., может вы меня немного неверно поняли, объясню ещё раз.
Без ключа /D программа Notepad++ автоматически ставится в %ProgramFiles% или %ProgramFiles(x86)% (переменные среды, равные С:\Program Files\ или C:\Program Files(x86) соответственно).
Мне же необходимо в переменной указать путь, на НЕсистемный диск, например: D:\Program Files\ . Это значение я задаю через переменную %mydir%.

Следующий вариант всё равно устанавливает NP++ в C:\Program Files(x86). Как только не пытался я выставлять кавычки, всё равно не работает.
Код:

@echo off
set mydir=D:\Program Files\
IF NOT EXIST "%mydir%Notepad++2" npp.6.1.6.Installer.exe /S /D=%mydir%"Notepad++2"

Нормально работает только такой вариант:
Код:

@echo off
pause
set mydir=D:\
IF NOT EXIST "%mydir%Program Files\Notepad++2" "npp.6.1.6.Installer.exe" /S /D=%mydir%"Program Files\Notepad++2"

Всё дело в пробеле. Может его можно как-нибудь экранировать или ещё что-нибудь сделать? Я чувствую, истина где-то рядом :)
P.S. Ещё раз повторюсь, 1-ый раз столкнулся с batниками, так что не ругайте, если сильно туплю...

K.A.V. 23-08-2012 00:47 1975067

Вложений: 1
  • TEST.rar (20.00 KB, скачиваний: 40)
Цитата:

Цитата Dezmont777
Всё дело в пробеле. »

А мне кажется, всё дело в кривости пакета инсталлятора, к которому вы обращаетесь

Посмотрите в архиве bat файл с моим примером кода
+ в архиве EXE файл написанный на NSIS
После запуска bat файла, данный небольшой EXE на NSIS покажет директорию "установки" (переданную в параметр /D) и параметры запуска инсталлятора

Dezmont777 23-08-2012 01:06 1975076

K.A.V., понятно. Спасибо Вам большое :) Сам бы ни за что на косяк разработчиков не подумал....


Время: 19:04.

Время: 19:04.
© OSzone.net 2001-