Как запустить приложение (*.exe) без установки Run-Time

Создание приложений, библиотек, инсталляторов
Lexan_83

Bronze
adviser
adviser
Сообщения: 221
Зарегистрирован: 18 май 2009, 10:50
Награды: 1
Репутация: 0
Версия LabVIEW: 8.6
Откуда: Москва

Re: Как создать полноценное приложение *.exe

Сообщение Lexan_83 »

dimedrol писал(а):С инсталером все понятно: у меня версия 8,2, там рантайм по умолчанию галочка стоит на рантайме. не подскажите ли как ответ на самый первый вопрос:
"Подскажите, пожалуйста, как создать полноценное приложение *.exe, чтобы его можно было использовать на любой машине, даже на которой нет установленного labVIEW."
цель: создать ехе, который без установки запустится на любой машине, которая ранее о :labview: и его модулях ничего не знала. Просто скопировал, запустил - работает.

Когда-то с седьмой версией провел такой эксперимент: скопировал свой екзешник в папку C:\Program Files\National Instruments\Shared\LabVIEW Run-Time\7.0, а затем всю папку Run-Time\7.0 на другой компьютер без :labview:, и екзешник запустился. На восьмой версии не проверял, но по идее должно работать.

dimedrol
beginner
beginner
Сообщения: 13
Зарегистрирован: 02 мар 2010, 22:31
Репутация: 0
Версия LabVIEW: 8.2
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение dimedrol »

сегодня попробовал только с папкой resours на версии 8.2, тоже ничего не получилось(((
надо будет завтра на run-time попробовать

пробовал и с run-time, ругался на отсутствие niini32.dll, нашел таковую... потом просто заупускается и вылетает, не показывая даже окна. Судя по советам, надо искать именно 7 версию :labview: ...

green520
beginner
beginner
Сообщения: 10
Зарегистрирован: 14 май 2012, 16:24
Репутация: 0
Версия LabVIEW: 2010
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение green520 »

Ну, ладно, статичное приложение создать не возможно.
Но что, даже нельзя в месте с приложением тащить RTE?
т. е. нет возможности создать мобильное приложение без инсталлера?
решение все еще не найдено?

AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1225
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Репутация: 0
Версия LabVIEW: 6.1 - 2016
Откуда: Германия
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение AndreyDmitriev »

green520 писал(а):Ну, ладно, статичное приложение создать не возможно.
Но что, даже нельзя в месте с приложением тащить RTE?
т. е. нет возможности создать мобильное приложение без инсталлера?
решение все еще не найдено?


Официального решения нет (и уже, видимо, не будет). Единственный документированный способ для старших версий - ставить LabVIEW Run-Time. Там дело даже не в LabVIEW, а в MSVC. Там требуется рантайм от микрософт, а его нельзя просто скопировать в ту же папку, он должен быть установлен. Хотя теоретически можно в манифесте поковыряться - на досуге попробую.
Последний раз редактировалось AndreyDmitriev 05 мар 2013, 03:10, всего редактировалось 1 раз.

AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1225
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Репутация: 0
Версия LabVIEW: 6.1 - 2016
Откуда: Германия
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение AndreyDmitriev »

AndreyDmitriev писал(а):Там дело даже не в LabVIEW, а в MSVC.


А ларчик довольно просто открывался. Надо добавить в ту же папку файлы msvcr90.dll и msvcp90.dll (требуется версия 9.0.21022.8 - можно взять из папки C:\Windows\winsxs) и приложить манифест microsoft.VC90.CRT.manifest вот с таким содержимым:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr90.dll" />
<file name="msvcp90.dll" />
</assembly>

Минимальный набор файлов для приложения на LV2012f1:

25.07.2012 16:30 14.001.288 lvrt.dll
25.07.2012 16:58 121.344 niCPULib.dll
25.07.2012 16:58 2.214.912 NIQtCore_2012.dll
25.07.2012 16:58 8.044.544 NIQtGui_2012.dll
25.07.2012 16:58 37.376 QtManager452_2012.dll
25.07.2012 16:58 72.323 tdtable.tdr

Для LV2010f4:

29.08.2011 15:59 14.037.088 lvrt.dll
05.04.2012 13:04 183.296 nicont.dll
29.08.2011 16:19 116.736 niCPULib.dll
29.08.2011 16:19 1.968.640 NIQtCore_2010.dll
29.08.2011 16:19 7.219.712 NIQtGui_2010.dll
29.08.2011 16:19 36.352 QtManager452_2010.dll

Плюс в папке English должны лежать lvapp.rsc и vidialogs.rsc

Если используются контролы из палитры Modern, то также требуется mesa.dll и папка models.
Понятно, что чем больше используется компонентов, тем больше файлов потребуется (ну, скажем, для математических функций lvanlys.dll, для других языков соответствующие ресурсы и т.д.). Ну и эти компоненты могут потребовать в свою очередь другие части, скажем для мат. функций может MKL потребоваться и т.д. В серьёзных проектах я бы не стал такой трюк использовать - если приложение "подхватит" вместо локальных файлов что-то из системной папки, то всё может рухнуть.

Я приложил примеры, которые проверил на практически голой WinXP SP3 (плюс я прошёлся по файлам упаковщиком - это не нарушило работоспособность) - попробуйте кому не лень на разных системах.
Вложения
MinApp2010.zip
(11.22 МБ) 270 скачиваний
MinApp2012.zip
(11.05 МБ) 284 скачивания

green520
beginner
beginner
Сообщения: 10
Зарегистрирован: 14 май 2012, 16:24
Репутация: 0
Версия LabVIEW: 2010
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение green520 »

Спасибо.
Будем проверять

gonik
beginner
beginner
Сообщения: 48
Зарегистрирован: 27 авг 2009, 15:07
Репутация: 0
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение gonik »

AndreyDmitriev писал(а):
А ларчик довольно просто открывался. Надо добавить в ту же папку файлы msvcr90.dll и msvcp90.dll (требуется версия 9.0.21022.8 - можно взять из папки C:\Windows\winsxs) и приложить манифест microsoft.VC90.CRT.manifest вот с таким содержимым:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr90.dll" />
<file name="msvcp90.dll" />
</assembly>

Минимальный набор файлов для приложения на LV2012f1:

25.07.2012 16:30 14.001.288 lvrt.dll
25.07.2012 16:58 121.344 niCPULib.dll
25.07.2012 16:58 2.214.912 NIQtCore_2012.dll
25.07.2012 16:58 8.044.544 NIQtGui_2012.dll
25.07.2012 16:58 37.376 QtManager452_2012.dll
25.07.2012 16:58 72.323 tdtable.tdr

Для LV2010f4:

29.08.2011 15:59 14.037.088 lvrt.dll
05.04.2012 13:04 183.296 nicont.dll
29.08.2011 16:19 116.736 niCPULib.dll
29.08.2011 16:19 1.968.640 NIQtCore_2010.dll
29.08.2011 16:19 7.219.712 NIQtGui_2010.dll
29.08.2011 16:19 36.352 QtManager452_2010.dll

Плюс в папке English должны лежать lvapp.rsc и vidialogs.rsc

Если используются контролы из палитры Modern, то также требуется mesa.dll и папка models.
Понятно, что чем больше используется компонентов, тем больше файлов потребуется (ну, скажем, для математических функций lvanlys.dll, для других языков соответствующие ресурсы и т.д.). Ну и эти компоненты могут потребовать в свою очередь другие части, скажем для мат. функций может MKL потребоваться и т.д. В серьёзных проектах я бы не стал такой трюк использовать - если приложение "подхватит" вместо локальных файлов что-то из системной папки, то всё может рухнуть.

Я приложил примеры, которые проверил на практически голой WinXP SP3 (плюс я прошёлся по файлам упаковщиком - это не нарушило работоспособность) - попробуйте кому не лень на разных системах.

Скажите, Андрей, а для 2011 такого набора у вас нет?

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3483
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение dadreamer »

gonik, а файлы с тем же именами, что выше, не подходят? Приложение падает?

AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1225
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Репутация: 0
Версия LabVIEW: 6.1 - 2016
Откуда: Германия
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение AndreyDmitriev »

gonik писал(а):Скажите, Андрей, а для 2011 такого набора у вас нет?


Да там всё по аналогии с 2010. У вас же есть все необходимые файлы, чтобы выполнить упражнение самостоятельно - msvcp90.dll, msvcr90.dll и манифест берутся из архивов выше, а остальное из C:\Program Files (x86)\National Instruments\Shared\LabVIEW Run-Time\2011.
Получится примерно вот что:
MiniApp2011.png
MiniApp2011.png (9.26 КБ) 11629 просмотров

Очевидно, что MSVC рантайм будет подходить и ко всем следующим версиям до тех пор, пока NI не перейдёт на следующую версию компилятора, а файлы NI LabVIEW Run-Time должны соответствовать версии LabVIEW, в котором генерялось приложение. Здесь нет обратной совместимости - для LV2011 рантайм от 2012 не подходит.
Вложения
MiniApp2011.zip
(11.43 МБ) 253 скачивания

gonik
beginner
beginner
Сообщения: 48
Зарегистрирован: 27 авг 2009, 15:07
Репутация: 0
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение gonik »

dadreamer писал(а):gonik, а файлы с тем же именами, что выше, не подходят? Приложение падает?

С пакетом 2012 пишет, что установщик слишком нов, а с пакетом 2010, что слишком стар.
Я нашел данные для аналогичного пакета 2011. Пишет ошибку.
http://yadi.sk/d/Sw1oo28u57gcP

AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1225
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Репутация: 0
Версия LabVIEW: 6.1 - 2016
Откуда: Германия
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение AndreyDmitriev »

gonik писал(а):
dadreamer писал(а):gonik, а файлы с тем же именами, что выше, не подходят? Приложение падает?

С пакетом 2012 пишет, что установщик слишком нов, а с пакетом 2010, что слишком стар.
Я нашел данные для аналогичного пакета 2011. Пишет ошибку.
http://yadi.sk/d/Sw1oo28u57gcP

Судя по этой ошибке, ваше приложение вообще рантайм не видит. Это с набором выше такая штука выскакивает, или вы сами собрали? Либо в приложении используется что-то, что требует дополнительных файлов из рантайма. Вообще для сложных приложений лучше использовать документированные способы установки. Даже если приложение внешне заводится без проблем, там надо тщательно проверять функциональность на чистой машине, чтобы быть уверенным, что всё работает как надо.

gonik
beginner
beginner
Сообщения: 48
Зарегистрирован: 27 авг 2009, 15:07
Репутация: 0
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение gonik »

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

:dntknw:

gonik
beginner
beginner
Сообщения: 48
Зарегистрирован: 27 авг 2009, 15:07
Репутация: 0
Версия LabVIEW: 8.5
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение gonik »

AndreyDmitriev писал(а):Судя по этой ошибке, ваше приложение вообще рантайм не видит. Это с набором выше такая штука выскакивает, или вы сами собрали? Либо в приложении используется что-то, что требует дополнительных файлов из рантайма. Вообще для сложных приложений лучше использовать документированные способы установки. Даже если приложение внешне заводится без проблем, там надо тщательно проверять функциональность на чистой машине, чтобы быть уверенным, что всё работает как надо.

Ошибка выскакивает, когда собрал сам пакет для 2011.
Точно такая же ошибка выскакивает, когда совсем нет никаких дополнительных файлов. Только экзэшник один.
Раньше компилировал действительно емкие программы, но сейчас даже одну! строку без каких-либо функций не могу скомпилировать.
Вечером переставлю лабвью. Вот думаю, какой ставить. 11-й или уже 12?
Меня обеспечили 12-ой версией, но пока не пользовался. 11-ая вполне устраивала.

AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1225
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Репутация: 0
Версия LabVIEW: 6.1 - 2016
Откуда: Германия
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение AndreyDmitriev »

gonik писал(а):И еще есть кое-что...
Сам не понимаю, как это возможно, но 3 недели назад без всяких танцев с бубнами откомпилировал приложение, которое не требует никаких рантаймов лабвью.
А сейчас даже при компиляции приложения, состоящего только из одной строки, требует этот рантайм

:dntknw:

Так не бывает по определению. Рантайм требуется всегда, независимо от объёма приложения. Три недели назад вы запускали приложение на системе, где рантайм уже стоял. Видимо вы его снесли напрочь. Переустанавливать-то пробовали?
http://joule.ni.com/nidu/cds/view/p/id/2534/lang/en

Что касается 2012 - таки лучше на неё перейти, ибо 2011 глючит до безобразия (но к ошибке выше её глючность никакого отношения не имеет - там у вас в другом проблема)

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3483
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Как создать полноценное приложение *.exe

Сообщение dadreamer »

gonik
Проверьте зависимости вашего экзешника с помощью Dependency Walker или утилиты Lister в Total Commander. Она покажет список библиотек, требующихся для работы вашего приложения.

Ответить

Вернуться в «Создание приложений»