Установите программу MathLink с произвольной средой PATH

Можно ли использовать Install[] для запуска программы MathLink с пользовательской переменной среды PATH?

Я пытаюсь использовать mEngine для подключения Mathematica к MATLAB в Windows. Это работает, только если mEngine.exe запущен, когда переменная среды PATH включает путь к библиотекам MATLAB. Можно ли изменить ПУТЬ для запуска этой программы только без необходимости изменять системный путь? Или есть еще способ запустить mEngine.exe?


person Szabolcs    schedule 30.11.2011    source источник
comment
это на окнах, я полагаю?   -  person acl    schedule 30.11.2011
comment
@acl да, обновлю вопрос.   -  person Szabolcs    schedule 30.11.2011
comment
хотя я никогда не использовал окна, я смутно помню, что в DOS есть командные файлы. не могли бы вы запустить mEngine из командного файла, который временно переопределяет путь, а затем возвращается обратно?   -  person acl    schedule 30.11.2011
comment
@acl Да, это работает очень хорошо ... Я не знаю, почему у меня возникла идея, что мы должны передать Install исполняемый файл MathLink, а не скрипт, который его запускает ... Интересно, следует ли мне сейчас удалить этот вопрос.   -  person Szabolcs    schedule 30.11.2011
comment
@Szabolcs ну, я бы оставил это. Я уверен, что вы не первый и не последний, у кого возникла эта проблема, и вы просто не думаете об ответе.   -  person acl    schedule 30.11.2011
comment
@Szabolcs - есть функция Mathematica Environment[name], которая позволяет вам читать переменную оболочки ядра name. Но нет функции Mathematica для установки переменных окружения (таких как SetEnvironment[name,value]). Это то, что вам нужно?   -  person Arnoud Buzing    schedule 30.11.2011
comment
@Szabolcs, я бы попробовал ответить acl и посмотрел, работает ли он. Если это так, предложите ему опубликовать это в качестве ответа.   -  person rcollyer    schedule 01.12.2011
comment
@rcollyer, вы также можете создать командный файл и использовать setx для установки глобальной переменной env PATH. Итак, сначала запустите этот пакет, затем установите свою программу, а затем запустите другой пакетный файл, который удаляет добавленные каталоги из% path%   -  person Dr. belisarius    schedule 01.12.2011
comment
@acl Да, как сказал rcollyer, вы должны опубликовать это как ответ.   -  person Szabolcs    schedule 01.12.2011
comment
@belisarius Я не знала о setx. Похоже, что он доступен не во всех версиях Windows (по крайней мере, в этой XP). Но set работает хорошо.   -  person Szabolcs    schedule 01.12.2011
comment
@Szabolcs, я бы не знал, что добавить в свой ответ. Последний раз я писал пакетные программы для систем, отличных от unix, на DOS 3.3. Может быть, вы ответите сами себе, предложив решение, которое вы использовали.   -  person acl    schedule 01.12.2011


Ответы (1)


Решение @acl обернуть mEngine.exe в пакетный файл и временно изменить путь оттуда, работает правильно:

Я использовал это как содержимое mEngine.bat:

set PATH=c:\path\to\matlab\bin\win32;%PATH%
start mEngine.exe %*
  • *% гарантирует, что все аргументы командной строки передаются mEngine.exe
  • start необходимо, чтобы окно команд не оставалось открытым до завершения работы mEngine.exe.

Его можно запустить с помощью Install["mEngine.bat"].

Поскольку вся информация, необходимая ядру для связи с mEngine.exe, передается Install[] в качестве аргументов командной строки, все, что нам нужно сделать, это запустить mEngine.exe с этими аргументами. Install[] не обязательно знать местоположение mEngine.exe, важно то, что процесс запускается с правильными аргументами командной строки, что обеспечивается %*.

person Szabolcs    schedule 01.12.2011
comment
Полезно знать, мне никогда не приходило в голову. +1. - person Leonid Shifrin; 01.12.2011
comment
@acl Я понимаю, что для UNIX это часть основ! Плюс, вероятно, там вообще не нужно было бы указывать путь Matlab - person Szabolcs; 01.12.2011
comment
@Szabolcs Я действительно просто в шутку имел в виду решение acl! - person acl; 01.12.2011