Сходу не получилось, очень много зависимостей у экзешника. Эта новая среда на .NET написана, тянет за собой здоровый набор библиотек. Походу это тот момент, когда выигрыш от подобных фокусов сошёл на нет и проще поставить ран-тайм, чем так извращаться.toshas писал(а):Интересно, а с NXG такое прокатывает ?
Как запустить приложение (*.exe) без установки Run-Time
-
dadreamer
- professor
- Сообщения: 3957
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 12 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
-
- beginner
- Сообщения: 27
- Зарегистрирован: 25 май 2015, 20:09
- Версия LabVIEW: 14.1
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Недавно мною было написано небольшое приложение для работы с устройством через интерфейс RS232.
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.
Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.
Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?
-
- professor
- Сообщения: 3498
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 54 раза
- Поблагодарили: 185 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
все способы-ответы на этот вопрос обсуждаются в этой ветке, почему бы не почитать прежде чем спрашивать?Аня писал(а):Недавно мною было написано небольшое приложение для работы с устройством через интерфейс RS232.
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.
Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?
То, что exe маленький, не значит, что ему не требуется много функций, которые спрятаны в run-time.
Вес рантайма - плата за удобство и размеры exe.
Программа на каком-нибудь .net тоже весит мало, только рантайм там не меньше LV-шного.
-
dadreamer
- professor
- Сообщения: 3957
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 12 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Именно ужать - сомнительно, т.к. инсталлер - уже архив, а большой вес оттого, что много базовых компонентов внутри для запуска любого скомпилированного приложения (с учётом отключенных компонентов при сборке). Это ещё у вас мало получилось, весь ран-тайм весит больше 300 МБ (для LV 2018 32/64 бита).Аня писал(а):Недавно мною было написано небольшое приложение для работы с устройством через интерфейс RS232.
Размер директории, сформированной в "Application Builder", составил 2 МБ.
Созданный инсталлятор занял на жестком диске свыше 100 МБ.
Все рекомендуемые компоненты кроме Serial Runtime и LabVIEW Runtime были отключены.
Существуют ли способы, позволяющие значительно ужать размер инсталлятора в LabVIEW?
Можете попробовать хак, описанный в данной теме, но раз использована 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-портом можно взять враппер типа Serial Port API или serpdrv (эти только под LV 32-bit). В таком случае понадобится лишь разместить DLL'ку рядом с экзешником.
-
- junior
- Сообщения: 56
- Зарегистрирован: 24 июл 2012, 11:09
- Версия LabVIEW: 2011, 202x
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Что-то на сегодняшний день в Win7 не работает сборка-пример "MiniApp2011.zip" выложенная AndreyDmitriev.
Может кто проверить?
Не могу разобраться в причине.
Выдает ошибку:
Может кто проверить?
Не могу разобраться в причине.
Выдает ошибку:
-
- junior
- Сообщения: 56
- Зарегистрирован: 24 июл 2012, 11:09
- Версия LabVIEW: 2011, 202x
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Нашёл одну автономную программу, которая базируется на LabVIEW 7.1.1 Run-Time Engine.
Работает без доп.библиотек (например msvcp90 и msvcr90) и сертификатов
Работает без доп.библиотек (например msvcp90 и msvcr90) и сертификатов
- Вложения
-
- SinaProg.zip
- (4.06 МБ) 373 скачивания
-
dadreamer
- professor
- Сообщения: 3957
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 12 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Проверил на W7 x64 и x32 - всё работает. Проверил также на W10 x64 - тоже работает. 7-ки, правда, давно не обновлял, но 10-ку обновляю регулярно. Сходу сложно сказать, какой-то конфликт библиотек. LV2011 Run-Time Engine установлен? Если да, попробуйте снести его.PeyNikola писал(а):Что-то на сегодняшний день в Win7 не работает сборка-пример "MiniApp2011.zip" выложенная AndreyDmitriev.
Раньше компиляторы попроще были, не тащили за собой столько зависимостей. К примеру, в 3-й / 4-й версиях ран-тайм вообще был в виде одного файла - кинул в папку с экзешником и готово.
- toshas
- assistant
- Сообщения: 105
- Зарегистрирован: 05 апр 2009, 22:45
- Версия LabVIEW: 9.0
- Благодарил (а): 13 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
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
Недавно потребовалось добавить в программу больше математики - функцию произвольной перестановки элементов массива 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
-
dadreamer
- professor
- Сообщения: 3957
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 12 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
toshas
>> Положил рядом с .exe ту, что для x64, т.к. система x64.
Все библиотеки должны быть той же разрядности, что и скомпилированное приложение (как и среда , в которой это приложение компилировалось). Поэтому, если экзешник 32 бита, то и lvanlys.dll должен быть 32 бита.
В общем, для 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 исправно работает.
>> Положил рядом с .exe ту, что для x64, т.к. система x64.
Все библиотеки должны быть той же разрядности, что и скомпилированное приложение (как и среда , в которой это приложение компилировалось). Поэтому, если экзешник 32 бита, то и lvanlys.dll должен быть 32 бита.
В общем, для 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 исправно работает.
- toshas
- assistant
- Сообщения: 105
- Зарегистрирован: 05 апр 2009, 22:45
- Версия LabVIEW: 9.0
- Благодарил (а): 13 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Вот спасибо! Работает!!
пара комментариев:
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
пара комментариев:
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
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Как создать полноценное приложение *.exe
Мой инсталлер после максимальных отключений весит 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 дня до упора заливал и сносил на таблет с разным наполнением, добился минимального размера загрузчика.
Все хорошо кроме одного, никак не въеду как забить пароль и его запрос на инсталлере в процессе установки приложения.
Я уже думал над созданием функции в виде процедуры, которая будет в процессе запуска после инсталяции выкидывать запрос пароля на сравнение с привязкой на отключение этого окна. Но это полумера, после честного снятия пароля, все пойдет в тираж...
На NI в этой теме не густо. Один юзер дал тот алгоритм, о котором я написал - привязка проектного кода к железу с сообщением админу данных и предоставлением ключа.
Попробую нарыть в нодах mac зацепку...
в выборке тулсов взял 4 опции,
Run Time eng;
NI VC2010MSMs;
NI Serial Run Time;
Ni Visa Run Time 14.
У меня вся компиляция на 14 и на 18 проходит без глюков в 1 клик. Создание исходного exe(шника) и инсталлера.
3 дня до упора заливал и сносил на таблет с разным наполнением, добился минимального размера загрузчика.
Все хорошо кроме одного, никак не въеду как забить пароль и его запрос на инсталлере в процессе установки приложения.
Я уже думал над созданием функции в виде процедуры, которая будет в процессе запуска после инсталяции выкидывать запрос пароля на сравнение с привязкой на отключение этого окна. Но это полумера, после честного снятия пароля, все пойдет в тираж...
На NI в этой теме не густо. Один юзер дал тот алгоритм, о котором я написал - привязка проектного кода к железу с сообщением админу данных и предоставлением ключа.
Попробую нарыть в нодах mac зацепку...
LabView 14,18
-
dadreamer
- professor
- Сообщения: 3957
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 12 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Select, вообще, эта тема не для обсуждения создания инсталлеров LV, здесь мы наоборот уходим от их создания с помощью хака с подсовыванием библиотек.
AFAIK, инсталлер, создаваемый , нельзя защитить паролем: 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%, но юзеров среднего уровня остановит от "копания" в коде.
AFAIK, инсталлер, создаваемый , нельзя защитить паролем: 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%, но юзеров среднего уровня остановит от "копания" в коде.
- Select
- developer
- Сообщения: 281
- Зарегистрирован: 12 дек 2017, 23:56
- Версия LabVIEW: 18
- Откуда: Врата надежды.
- Поблагодарили: 2 раза
Re: Как создать полноценное приложение *.exe
Я пошел именно по такому пути с ключом и аппаратной привязкой.Лучше проработать вменяемую систему лицензирования самого софта, с ключами и прочим.
LabView 14,18
- toshas
- assistant
- Сообщения: 105
- Зарегистрирован: 05 апр 2009, 22:45
- Версия LabVIEW: 9.0
- Благодарил (а): 13 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
[quote=="dadreamer"]Ради интереса проверил аналогичный финт на Linux (Ubuntu 15.04 x64, 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/
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/
-
Kosist
- expert
- Сообщения: 1237
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Как создать полноценное приложение *.exe
Перефразируя легендарную фразу - "Все уже придумано до нас".Select писал(а):Я пошел именно по такому пути с ключом и аппаратной привязкой.Лучше проработать вменяемую систему лицензирования самого софта, с ключами и прочим.
Если софт будет продаваться, то можно купить готовое решение, и не париться. Екзешники можно лицензировать при помощи Third-Party Licensing and Activation Toolkit. Правда, нужен SOLO сервер и аккаунт платный, но зато если разбить его стоимость в каждую единицу проданного приложения, то может быть выгодно (зависит от объема продаж).
А аппаратная привязка - это баловство до поры до времени. Железо недолговечно, а потом нужно будет голову ломать - действительно ли у них полетел жесткий диск/еще чего-то, или они новую систему хотят установить.
Мы делили апельсин - много наших полегло...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение