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

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

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

Postby dadreamer on 01 Dec 2018, 22:35

Интересно, а с NXG такое прокатывает ?
Сходу не получилось, очень много зависимостей у экзешника. Эта новая среда на .NET написана, тянет за собой здоровый набор библиотек. Походу это тот момент, когда выигрыш от подобных фокусов сошёл на нет и проще поставить ран-тайм, чем так извращаться.
User avatar
dadreamer
professor
professor
 
Posts: 3438
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 859
I/O VIP vision internet

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

Postby Аня on 03 Dec 2018, 14:16

Недавно мною было написано небольшое приложение для работы с устройством через интерфейс RS232.
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.

Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?
Аня
beginner
beginner
 
Posts: 27
Joined: 25 May 2015, 20:09
LabVIEW Version: 14.1
Karma: 0

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

Postby Artem.spb on 03 Dec 2018, 15:26

Недавно мною было написано небольшое приложение для работы с устройством через интерфейс RS232.
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.

Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?

все способы-ответы на этот вопрос обсуждаются в этой ветке, почему бы не почитать прежде чем спрашивать?
То, что exe маленький, не значит, что ему не требуется много функций, которые спрятаны в run-time.
Вес рантайма - плата за удобство и размеры exe.
Программа на каком-нибудь .net тоже весит мало, только рантайм там не меньше LV-шного.
Artem.spb
expert
expert
 
Posts: 1755
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 270
CLD hardware I/O VIP freelance

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

Postby dadreamer on 03 Dec 2018, 20:53

Недавно мною было написано небольшое приложение для работы с устройством через интерфейс RS232.
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.

Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?
Именно ужать - сомнительно, т.к. инсталлер - уже архив, а большой вес оттого, что много базовых компонентов внутри для запуска любого скомпилированного приложения (с учётом отключенных компонентов при сборке). Это ещё у вас мало получилось, весь ран-тайм весит больше 300 МБ (для LV 2018 32/64 бита).

Можете попробовать хак, описанный в данной теме, но раз использована VISA, то потребуется дополнительно определить библиотеки, от которых будет зависеть экзешник (Dependency Walker может облегчить задачу). Точно понадобятся вот эти:
visa32.dll из C:\Windows\System32 (\SysWOW64 для 32-битного приложения на 64-битной ОСи)
NiViAsrl.dll из C:\Program Files\IVI Foundation\VISA\Win64\Bin (C:\Program Files (x86)\IVI Foundation\VISA\WinNT\bin для 32-битного приложения)
Но есть и другие зависимости, их надо найти. У меня, к сожалению, в ближайшие дни нет времени, чтобы этими вещами заняться. Ну, или можете вместо Визы использовать какой-нибудь враппер на WinAPI. Для работы с COM-портом можно взять враппер типа или (эти только под LV 32-bit). В таком случае понадобится лишь разместить DLL'ку рядом с экзешником.
User avatar
dadreamer
professor
professor
 
Posts: 3438
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 859
I/O VIP vision internet

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

Postby PeyNikola on 13 Aug 2019, 11:58

Что-то на сегодняшний день в Win7 не работает сборка-пример "MiniApp2011.zip" выложенная AndreyDmitriev.
Может кто проверить?
Не могу разобраться в причине.
Выдает ошибку:
Attachments
bnmb.png
7987.png
PeyNikola
beginner
beginner
 
Posts: 41
Joined: 24 Jul 2012, 11:09
LabVIEW Version: 2010
Karma: 10

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

Postby PeyNikola on 13 Aug 2019, 16:52

Нашёл одну автономную программу, которая базируется на LabVIEW 7.1.1 Run-Time Engine.
Работает без доп.библиотек (например msvcp90 и msvcr90) и сертификатов
Attachments
SinaProg.zip
(4.06 MiB) Downloaded 52 times
PeyNikola
beginner
beginner
 
Posts: 41
Joined: 24 Jul 2012, 11:09
LabVIEW Version: 2010
Karma: 10

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

Postby dadreamer on 13 Aug 2019, 18:05

Что-то на сегодняшний день в Win7 не работает сборка-пример "MiniApp2011.zip" выложенная AndreyDmitriev.
Проверил на W7 x64 и x32 - всё работает. Проверил также на W10 x64 - тоже работает. 7-ки, правда, давно не обновлял, но 10-ку обновляю регулярно. Сходу сложно сказать, какой-то конфликт библиотек. LV2011 Run-Time Engine установлен? Если да, попробуйте снести его.

Раньше компиляторы попроще были, не тащили за собой столько зависимостей. К примеру, в 3-й / 4-й версиях :labview: ран-тайм вообще был в виде одного файла - кинул в папку с экзешником и готово.
User avatar
dadreamer
professor
professor
 
Posts: 3438
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 859
I/O VIP vision internet

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

Postby toshas on 02 Jan 2020, 13:19

dadreamer, пользовался предложенными способами пару лет и все работало отлично.
Недавно потребовалось добавить в программу больше математики - функцию произвольной перестановки элементов массива Riffle Array.
Теперь при запуске .exe на ПК без LV выдается ошибка "lvanlys.dll resource not found".

Взял эту библиотеку по стандартному пути C:\Program Files (x86)\National Instruments\LabVIEW 2014\resource и положил рядом.
Эффекта ноль(

Посмотрел на lvanlys.dll с помощью Dependency Walker, ссылается на LV140000_BLASLAPACK.dll
Их две для разной разрядности
C:\Program Files\National Instruments\Shared\MKL\LV140000_BLASLAPACK
C:\Program Files (x86)\National Instruments\Shared\MKL\LV140000_BLASLAPACK
Положил рядом с .exe ту, что для x64, т.к. система x64.
Результата нет, по прежнему ругается на "lvanlys.dll resource not found".

Подскажите пожалуйста, куда копать дальше ?

На lavag нашел, что lvanlys.dll лишь обертка и может тянуть за собой много библиотек
https://lavag.org/topic/2230-help-problem-with-exe/
Однако, Dependency Walker не видит ничего больше чем LV140000_BLASLAPACK.dll
User avatar
toshas
junior
junior
 
Posts: 63
Joined: 05 Apr 2009, 22:45
LabVIEW Version: 9.0
Karma: 1

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

Postby dadreamer on 02 Jan 2020, 19:41

toshas
>> Положил рядом с .exe ту, что для x64, т.к. система x64.
Все библиотеки должны быть той же разрядности, что и скомпилированное приложение (как и среда :labview: , в которой это приложение компилировалось). Поэтому, если экзешник 32 бита, то и lvanlys.dll должен быть 32 бита.

В общем, для :labview: 2014 32-bit у меня получился вот такой набор папок и файлов:
English
models
Application.exe
LV140000_BLASLAPACK.dll
lvanlys.dll
lvrt.dll
mesa.dll
nicont.dll
niCPULib.dll
nierInterface.dll (из C:\Windows\System32 на 32-разрядной ОСи; на 64-разрядной папка будет C:\Windows\SysWOW64)
NIQtCore_2014.dll
NIQtGui_2014.dll
QtManager452_2014.dll
tdtable.tdr

Изначально пытался также добавить microsoft.VC90.CRT.manifest, msvcp90.dll и msvcr90.dll, но прога не хочет их использовать, а сразу лезет в C:\Windows\winsxs и берёт либы оттуда. Ну и фиг с ним, пусть берёт. Проверил на чистой 7-ке, указанная функция Riffle из MKL исправно работает.
User avatar
dadreamer
professor
professor
 
Posts: 3438
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 859
I/O VIP vision internet

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

Postby toshas on 02 Jan 2020, 23:14

Вот спасибо! Работает!!

пара комментариев:
1) nicont.dll - похоже лишний, работает и без него
2) lvanlys.dll и LV140000_BLASLAPACK.dll должны лежать рядом.
Упаковщик по умолчанию рядом с .exe создает папку data в которую кладет lvanlys.dll
(lvanlys.dll при этом взят из C:\Program Files (x86)\National Instruments\LabVIEW 2014\resource).
Так вот, LV140000_BLASLAPACK.dll нужно положить в эту же папку или вообще папку data снести и оба dll файла положить рядом с .exe
(LV140000_BLASLAPACK.dll должен быть взят из C:\Program Files (x86)\National Instruments\Shared\MKL\LV140000_BLASLAPACK)

p.s. пути указаны для LV2014 32-bit и Win7 x64
User avatar
toshas
junior
junior
 
Posts: 63
Joined: 05 Apr 2009, 22:45
LabVIEW Version: 9.0
Karma: 1

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

Postby Select on 27 Jan 2020, 02:11

Мой инсталлер после максимальных отключений весит 200 mb, папка с аппликацией 9 mb, добавил в сборку NIUninstaller , установщик драйвера под 232 кабель.
в выборке тулсов взял 4 опции,
Run Time eng;
NI VC2010MSMs;
NI Serial Run Time;
Ni Visa Run Time 14.

У меня вся компиляция на 14 и на 18 проходит без глюков в 1 клик. Создание исходного exe(шника) и инсталлера.
3 дня до упора заливал и сносил на таблет с разным наполнением, добился минимального размера загрузчика.
Все хорошо кроме одного, никак не въеду как забить пароль и его запрос на инсталлере в процессе установки приложения. :dntknw:
Я уже думал над созданием функции в виде процедуры, которая будет в процессе запуска после инсталяции выкидывать запрос пароля на сравнение с привязкой на отключение этого окна. Но это полумера, после честного снятия пароля, все пойдет в тираж... :think:
На NI в этой теме не густо. Один юзер дал тот алгоритм, о котором я написал - привязка проектного кода к железу с сообщением админу данных и предоставлением ключа.
Попробую нарыть в нодах mac зацепку...
LabView 14
User avatar
Select
adviser
adviser
 
Posts: 240
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 18
Karma: 5

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

Postby dadreamer on 27 Jan 2020, 13:37

Select, вообще, эта тема не для обсуждения создания инсталлеров LV, здесь мы наоборот уходим от их создания с помощью хака с подсовыванием библиотек.

AFAIK, инсталлер, создаваемый :labview: , нельзя защитить паролем: https://forums.ni.com/t5/LabVIEW-Idea-E ... anguage=en
Советы могут быть такие:
1. Использовать тулкит для лицензирования Third-Party Licensing and Activation Toolkit: http://sine.ni.com/nips/cds/view/p/lang/ru/nid/209107 Как по мне, эта штука не очень надёжная, расписывать не буду, т.к. у нас правила, просто примите на веру :)
2. Упаковать инсталлер в архив, на который повесить пароль. Почему бы и нет, но юзер потом всё равно растиражирует, если ему надо.
3. Перейти на сторонний инсталлер, например Inno Setup, где есть возможность установки пароля. Плюс: юзер не вскроет инсталлер, т.к. там хэш MD5 с солью, т.е. в чистом виде инсталлер не взять. Минус: юзер может взять установленные файлы и сделать с ними, что угодно.

Да и вообще, против лома нет приёма. Защищать сам инсталлер бессмысленно. Лучше проработать вменяемую систему лицензирования самого софта, с ключами и прочим. Это всё равно не панацея на 100%, но юзеров среднего уровня остановит от "копания" в коде.
User avatar
dadreamer
professor
professor
 
Posts: 3438
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 859
I/O VIP vision internet

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

Postby Select on 09 Feb 2020, 22:59

Лучше проработать вменяемую систему лицензирования самого софта, с ключами и прочим.
Я пошел именно по такому пути с ключом и аппаратной привязкой.
LabView 14
User avatar
Select
adviser
adviser
 
Posts: 240
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 18
Karma: 5

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

Postby toshas on 23 Mar 2020, 20:16

[quote=="dadreamer"]Ради интереса проверил аналогичный финт на Linux (Ubuntu 15.04 x64, :labview: 2014 x64). Получилось ещё меньше зависимостей, чем на Windows. В моём случае потребовались вот такие папки и файлы:
English
models
liblvrt.so.14.0 (переименованный liblvrt.so.14.0.0)
libniCPULib.so (переименованный libniCPULib.so.14.0.0)
tdtable.tdr
Ожидал, что си-шный ран-тайм запросит, но почему-то не стал. Возможно, на чистой ОСи всё-таки понадобится.

upd: нет, не просит, проверил на чистой Убунте 15.04.

На Маке пока не пробовал, если будет время, постараюсь проверить.[/quote]

Появилась необходимость повторить на Ubuntu 16.04 x64 и LV 2014 x64.
При попытке запуска:
"No supported languages installed!"
"Unable to open resource files"

dadreamer, не подскажете, что не так ?

Разобрался, в папке English не хватало lvapp.rsc из папки /usr/local/natinst/LabVIEW-2014-64/AppLibs/
User avatar
toshas
junior
junior
 
Posts: 63
Joined: 05 Apr 2009, 22:45
LabVIEW Version: 9.0
Karma: 1

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

Postby Kosist on 24 Mar 2020, 00:49

[quote=="Select"]Лучше проработать вменяемую систему лицензирования самого софта, с ключами и прочим.
Я пошел именно по такому пути с ключом и аппаратной привязкой.[/quote]
Перефразируя легендарную фразу - "Все уже придумано до нас".
Если софт будет продаваться, то можно купить готовое решение, и не париться. Екзешники можно лицензировать при помощи Third-Party Licensing and Activation Toolkit. Правда, нужен SOLO сервер и аккаунт платный, но зато если разбить его стоимость в каждую единицу проданного приложения, то может быть выгодно (зависит от объема продаж).
А аппаратная привязка - это баловство до поры до времени. Железо недолговечно, а потом нужно будет голову ломать - действительно ли у них полетел жесткий диск/еще чего-то, или они новую систему хотят установить.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
expert
expert
 
Posts: 1032
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 283
CLAD I/O VIP students

PreviousNext

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

Who is online

Users browsing this forum: No registered users and 3 guests

cron