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

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

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

Postby Lexan_83 on 20 Apr 2011, 09:05

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

Когда-то с седьмой версией провел такой эксперимент: скопировал свой екзешник в папку C:\Program Files\National Instruments\Shared\LabVIEW Run-Time\7.0, а затем всю папку Run-Time\7.0 на другой компьютер без :labview:, и екзешник запустился. На восьмой версии не проверял, но по идее должно работать.
Lexan_83
adviser
adviser
 
Posts: 221
Joined: 18 May 2009, 10:50
Location: Москва
Medals: 1
Bronze (1)
LabVIEW Version: 8.6
Karma: 45
hardware I/O PDA VIP

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

Postby dimedrol on 21 Apr 2011, 20:44

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

пробовал и с run-time, ругался на отсутствие niini32.dll, нашел таковую... потом просто заупускается и вылетает, не показывая даже окна. Судя по советам, надо искать именно 7 версию :labview: ...
dimedrol
beginner
beginner
 
Posts: 13
Joined: 02 Mar 2010, 22:31
LabVIEW Version: 8.2
Karma: 0

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

Postby green520 on 04 Mar 2013, 20:59

Ну, ладно, статичное приложение создать не возможно.
Но что, даже нельзя в месте с приложением тащить RTE?
т. е. нет возможности создать мобильное приложение без инсталлера?
решение все еще не найдено?
green520
beginner
beginner
 
Posts: 10
Joined: 14 May 2012, 16:24
LabVIEW Version: 2010
Karma: 0

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

Postby AndreyDmitriev on 04 Mar 2013, 21:59

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


Официального решения нет (и уже, видимо, не будет). Единственный документированный способ для старших версий - ставить LabVIEW Run-Time. Там дело даже не в LabVIEW, а в MSVC. Там требуется рантайм от микрософт, а его нельзя просто скопировать в ту же папку, он должен быть установлен. Хотя теоретически можно в манифесте поковыряться - на досуге попробую.
Last edited by AndreyDmitriev on 05 Mar 2013, 03:10, edited 1 time in total.
User avatar
AndreyDmitriev
VIP
VIP
 
Posts: 1225
Joined: 03 Feb 2010, 00:42
Location: Германия
Medals: 6
Activity (1) Professionalism (1) Tutorials (1) Gold (1) Black (2)
LabVIEW Version: 6.1 - 2016
Karma: 433

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

Postby AndreyDmitriev on 05 Mar 2013, 02:08

AndreyDmitriev wrote:Там дело даже не в 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 (плюс я прошёлся по файлам упаковщиком - это не нарушило работоспособность) - попробуйте кому не лень на разных системах.
Attachments
MinApp2010.zip
(11.22 MiB) Downloaded 189 times
MinApp2012.zip
(11.05 MiB) Downloaded 204 times
User avatar
AndreyDmitriev
VIP
VIP
 
Posts: 1225
Joined: 03 Feb 2010, 00:42
Location: Германия
Medals: 6
Activity (1) Professionalism (1) Tutorials (1) Gold (1) Black (2)
LabVIEW Version: 6.1 - 2016
Karma: 433

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

Postby green520 on 07 Mar 2013, 03:15

Спасибо.
Будем проверять
green520
beginner
beginner
 
Posts: 10
Joined: 14 May 2012, 16:24
LabVIEW Version: 2010
Karma: 0

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

Postby gonik on 24 May 2013, 11:18

AndreyDmitriev wrote:
А ларчик довольно просто открывался. Надо добавить в ту же папку файлы 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 такого набора у вас нет?
gonik
beginner
beginner
 
Posts: 48
Joined: 27 Aug 2009, 15:07
LabVIEW Version: 8.5
Karma: 0

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

Postby dadreamer on 24 May 2013, 11:40

gonik, а файлы с тем же именами, что выше, не подходят? Приложение падает?
User avatar
dadreamer
professor
professor
 
Posts: 3157
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 803
I/O VIP vision internet

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

Postby AndreyDmitriev on 24 May 2013, 12:40

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


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

Очевидно, что MSVC рантайм будет подходить и ко всем следующим версиям до тех пор, пока NI не перейдёт на следующую версию компилятора, а файлы NI LabVIEW Run-Time должны соответствовать версии LabVIEW, в котором генерялось приложение. Здесь нет обратной совместимости - для LV2011 рантайм от 2012 не подходит.
Attachments
MiniApp2011.zip
(11.43 MiB) Downloaded 175 times
User avatar
AndreyDmitriev
VIP
VIP
 
Posts: 1225
Joined: 03 Feb 2010, 00:42
Location: Германия
Medals: 6
Activity (1) Professionalism (1) Tutorials (1) Gold (1) Black (2)
LabVIEW Version: 6.1 - 2016
Karma: 433

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

Postby gonik on 24 May 2013, 12:42

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

С пакетом 2012 пишет, что установщик слишком нов, а с пакетом 2010, что слишком стар.
Я нашел данные для аналогичного пакета 2011. Пишет ошибку.
http://yadi.sk/d/Sw1oo28u57gcP
gonik
beginner
beginner
 
Posts: 48
Joined: 27 Aug 2009, 15:07
LabVIEW Version: 8.5
Karma: 0

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

Postby AndreyDmitriev on 24 May 2013, 13:01

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

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

Судя по этой ошибке, ваше приложение вообще рантайм не видит. Это с набором выше такая штука выскакивает, или вы сами собрали? Либо в приложении используется что-то, что требует дополнительных файлов из рантайма. Вообще для сложных приложений лучше использовать документированные способы установки. Даже если приложение внешне заводится без проблем, там надо тщательно проверять функциональность на чистой машине, чтобы быть уверенным, что всё работает как надо.
User avatar
AndreyDmitriev
VIP
VIP
 
Posts: 1225
Joined: 03 Feb 2010, 00:42
Location: Германия
Medals: 6
Activity (1) Professionalism (1) Tutorials (1) Gold (1) Black (2)
LabVIEW Version: 6.1 - 2016
Karma: 433

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

Postby gonik on 24 May 2013, 13:05

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

:dntknw:
gonik
beginner
beginner
 
Posts: 48
Joined: 27 Aug 2009, 15:07
LabVIEW Version: 8.5
Karma: 0

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

Postby gonik on 24 May 2013, 13:09

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

Ошибка выскакивает, когда собрал сам пакет для 2011.
Точно такая же ошибка выскакивает, когда совсем нет никаких дополнительных файлов. Только экзэшник один.
Раньше компилировал действительно емкие программы, но сейчас даже одну! строку без каких-либо функций не могу скомпилировать.
Вечером переставлю лабвью. Вот думаю, какой ставить. 11-й или уже 12?
Меня обеспечили 12-ой версией, но пока не пользовался. 11-ая вполне устраивала.
gonik
beginner
beginner
 
Posts: 48
Joined: 27 Aug 2009, 15:07
LabVIEW Version: 8.5
Karma: 0

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

Postby AndreyDmitriev on 24 May 2013, 13:18

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

:dntknw:

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

Что касается 2012 - таки лучше на неё перейти, ибо 2011 глючит до безобразия (но к ошибке выше её глючность никакого отношения не имеет - там у вас в другом проблема)
User avatar
AndreyDmitriev
VIP
VIP
 
Posts: 1225
Joined: 03 Feb 2010, 00:42
Location: Германия
Medals: 6
Activity (1) Professionalism (1) Tutorials (1) Gold (1) Black (2)
LabVIEW Version: 6.1 - 2016
Karma: 433

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

Postby dadreamer on 24 May 2013, 16:55

gonik
Проверьте зависимости вашего экзешника с помощью Dependency Walker или утилиты Lister в Total Commander. Она покажет список библиотек, требующихся для работы вашего приложения.
User avatar
dadreamer
professor
professor
 
Posts: 3157
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 803
I/O VIP vision internet

PreviousNext

Return to Создание приложений

Who is online

Users browsing this forum: No registered users and 3 guests

cron