Заставить скомпилированное приложение Matlab использовать среду выполнения, а не лицензию Matlab

У моего клиента есть сеть, которая не имеет доступа к Интернету. Они намерены купить (очень мало) лицензий Matlab только для моих усилий по разработке и моего коллеги. Однако для оперативного использования их персоналом я должен скомпилировать свой код Matlab в файлы *.exe, чтобы операторы не использовали лицензии только для выполнения моего «приложения» / «решения» Matlab (язык, кажется, меняется в эти дни). На самом деле у них не будет mcc лицензий, поэтому компиляция будет выполняться в сети моей домашней организации.

Проблема в том, что при запуске скомпилированного исполняемого файла не существует очевидного способа заставить его использовать среду выполнения компилятора Matlab (MCR). Если в целевой системе есть лицензии Matlab, она также может их использовать. Однако весь смысл компиляции заключается в том, чтобы избежать использования нескольких лицензий в клиентской сети, чтобы лицензии были доступны для разработки m-файлов, когда это необходимо. Таким образом, уникальная особенность этой ситуации заключается в том, что целевая среда в конечном итоге будет иметь обе лицензии Matlab и MCR, а также требование, чтобы скомпилированные исполняемые файлы использовали только MCR, а не лицензии Matlab.

Mathworks изучает проблему, но перспективы найти решение неясны. Я надеюсь, что это не потребует ручного переназначения сценариев входа в систему для настройки переменных PATH среды, поскольку это сломается при каждом обновлении сценариев входа. Я надеюсь на такое решение, как прагма-подобный оператор в m-файле верхнего уровня или переключатель mcc. Однако при просмотре документации mcc ни один переключатель не представляется вероятным кандидатом, кроме -Y license.lic, и неясно, как его использовать.

Что касается клиента, то еще одно ограничение, с которым я сталкиваюсь, заключается в том, что я не хочу приставать к нему методом проб и ошибок (это не их работа). Это осложняется тем фактом, что также нет эффективного способа донести до них электронный контент, поэтому быстрый итеративный метод проб и ошибок исключен. Кроме того, их целевая среда с лицензиями Matlab еще не существует, хотя процесс ее создания находится в разработке. Это немного проблема курицы и яйца; они получают Matlab, исходя из предположения, что мы можем найти решения для проблем, но трудно заранее исключить риск, исследуя решения, когда целевая среда еще не существует.

В системе моей домашней организации я также сталкиваюсь с ограничением, заключающимся в том, что у меня нет прав на установку MCR. Следовательно, я не могу методом проб и ошибок определить заклинание или рецепт, который игнорирует наличие лицензий Matlab и заставляет использовать MCR. Не то чтобы у меня было на это время, поскольку это очень неэффективный способ достижения цели.

Из-за множества косвенных проблем метод проб и ошибок не подходит, и я надеюсь, что существует стандартный метод принудительного использования MCR по любым лицензиям Matlab, которые могут присутствовать. Я использую R2015b.


person user36800    schedule 23.06.2018    source источник
comment
Не должно быть никакого «принуждения», этого должно быть достаточно, чтобы установить MCR на клиентских машинах, использующих ваш исполняемый файл. Я не понял из твоего описания - ты и этого не умеешь?   -  person Ofek Shilon    schedule 23.06.2018
comment
Я только что инициировал связь для передачи исполняемых файлов клиенту. Локальное тестирование на сегодняшний день состоит из успешного запуска исполняемых файлов в автономном режиме без Matlab. В возможной целевой среде будет установлен как MCR, так и доступ к лицензиям Matlab. Я знаю, что в каждом из этих условий по отдельности исполняемые файлы будут работать. Я хочу устранить неопределенность, имея способ гарантировать, что исполняемые файлы будут использовать MCR, а не лицензию Matlab. Я ищу готовое решение, потому что в настоящее время я не могу дублировать эту среду, чтобы попробовать потенциальные решения.   -  person user36800    schedule 24.06.2018
comment
Какие ОС используются для компиляции и развертывания?   -  person mhopeng    schedule 27.11.2018
comment
На момент публикации клиентской системой была Windows 7, но вскоре она может стать Windows 10. У меня нет четкого и постоянного представления о клиентской сети. В конце концов TMW вернулся с разъяснением того, как скомпилированные исполняемые файлы выбирают, полагаться ли на лицензию Matlab или MCR. Я опубликовал подробности в качестве ответа на этот вопрос.   -  person user36800    schedule 02.01.2019


Ответы (2)


Я работаю с этой точной ситуацией развертывания для OS X/Linux с Matlab 2015b. Когда вы компилируете приложение для ОС на основе Unix, компилятор создает сценарий оболочки, который выполняется при запуске. Мое решение состоит в том, чтобы изменить этот сценарий, чтобы проверить наличие библиотек времени выполнения. Например, в OS X (macOS):

  echo "Setting up environment variables"
  if [ -d "/Applications/MATLAB/MATLAB_Compiler_Runtime/v90" ] ; then
    echo "Using MCR v8.6 (R2015b) (_Compiler)"
    MCRROOT=/Applications/MATLAB/MATLAB_Compiler_Runtime/v90
  elif [ -d "/Applications/MATLAB/MATLAB_Runtime/v90" ] ; then
    echo "Using MCR v8.6 (R2015b)"
    MCRROOT=/Applications/MATLAB/MATLAB_Runtime/v90
  elif [ -d "/Applications/MATLAB_R2015b.app" ] ; then
    echo "Using MATLAB R2015b application"
    MCRROOT=/Applications/MATLAB_R2015b.app
  else
    echo "No MATLAB libraries found! Install MCR R2015b from:"
    echo " http://www.mathworks.com/products/compiler/mcr/"
    echo " "
    sleep 10
    exit
  fi
person mhopeng    schedule 27.11.2018
comment
Спасибо, mhopeng, но обсуждаемой хост-системой (на момент публикации) была Windows 7. С тех пор мы слышали слухи о скором переходе на Windows 10, но сроки не были указаны. - person user36800; 31.12.2018

Ответ ТМВ:

Запуск автономного приложения, созданного с помощью MATLAB Compiler, не приведет к проверке каких-либо лицензий независимо от того, работает ли он с установленной средой выполнения MATLAB Compiler или со средой выполнения, установленной как часть установки MATLAB Compiler. Обратите внимание, что у конечных пользователей с MATLAB, установленным без MATLAB Compiler, библиотеки времени выполнения компилятора не будут включены в их установку.

Если вы установили MATLAB Compiler Toolbox, MATLAB будет иметь папку времени выполнения с необходимыми библиотеками DLL для выполнения автономного приложения. Без MATLAB Compiler Toolbox эти библиотеки DLL будут недоступны. Вместо этого пользователь должен установить MCR для запуска автономного приложения... пользователь не может отказаться от установки MCR, если у него не установлен MATLAB Compiler Toolbox и он хочет запустить автономное приложение.

person user36800    schedule 02.01.2019