OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Ошибка выполнения exe, скомпилированного из скрипта, использующего более одной библиотеки

Open andreynedogonov-bit opened this issue 3 months ago • 6 comments

Опишите ошибку Из скрипта, в начале которого строки #Использовать OInt #Использовать InternetMail сделан exe. При выполнении возникает ошибка на строку Профиль = Новый ИнтернетПочтовыйПрофиль; что неправильный объект, типа того. Если поменять подключение библиотек местами: #Использовать InternetMail #Использовать OInt то exe ругается уже на OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDПользователя, Тема + Символы.ПС + Текст); Без создания exe, когда просто запуск скрипта как параметр osript.exe, ошибок нет. Делаю вывод что при создании exe подключается только первая указанная в скрипте библиотека, а дальнейшие инструкции #Использовать игнорируются. Считаю что это существенная ошибка!

Воспроизведение ошибки Все изложено в описании ошибки.

Ожидаемое поведение Экзешник из скрипта должен работать точно так же, как сам скрипт.

Окружение

  • ОС: Windows 11
  • Версия: крайний oscript на данный момент, v1.9.3

Дополнительная информация Мой первый багрепорт, звиняйте что не так.

andreynedogonov-bit avatar Oct 06 '25 13:10 andreynedogonov-bit

Это точно не так, поскольку в exe упакован менеджер ovm и в нем намного больше одной библиотеки. Ваш случай надо разбирать более детально. Есть ли в библиотеках компоненты dll?

EvilBeaver avatar Oct 06 '25 13:10 EvilBeaver

Добрый день. Спасибо что разбираетесь, буду посещать эту страницу чаще. Под компонентами dll вы имеете в виду файлы dll внутри папки библиотеки? В одной есть. Вот полный список файлов библиотек: InternetMail: c:\1C\OneScript\lib\InternetMail\opm-metadata.xml c:\1C\OneScript\lib\InternetMail\package-loader.os c:\1C\OneScript\lib\InternetMail\README.md c:\1C\OneScript\lib\InternetMail\bin\BouncyCastle.Crypto.dll c:\1C\OneScript\lib\InternetMail\bin\MailComponent.dll c:\1C\OneScript\lib\InternetMail\bin\MailComponent.xml c:\1C\OneScript\lib\InternetMail\bin\MailKit.dll c:\1C\OneScript\lib\InternetMail\bin\MailKit.xml c:\1C\OneScript\lib\InternetMail\bin\MimeKit.dll c:\1C\OneScript\lib\InternetMail\bin\MimeKit.xml c:\1C\OneScript\lib\InternetMail\bin\syntaxHelp.json OInt: c:\1C\OneScript\lib\oint\lib.config c:\1C\OneScript\lib\oint\LICENSE c:\1C\OneScript\lib\oint\opm-metadata.xml c:\1C\OneScript\lib\oint\README.md c:\1C\OneScript\lib\oint\addins\OPI_Cryptography.zip c:\1C\OneScript\lib\oint\addins\OPI_FTP.zip c:\1C\OneScript\lib\oint\addins\OPI_MSSQL.zip c:\1C\OneScript\lib\oint\addins\OPI_MySQL.zip c:\1C\OneScript\lib\oint\addins\OPI_PostgreSQL.zip c:\1C\OneScript\lib\oint\addins\OPI_RCON.zip c:\1C\OneScript\lib\oint\addins\OPI_SQLite.zip c:\1C\OneScript\lib\oint\addins\OPI_TCPClient.zip c:\1C\OneScript\lib\oint\core\Modules\OPI_Airtable.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Bitrix24.os c:\1C\OneScript\lib\oint\core\Modules\OPI_CDEK.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Dropbox.os c:\1C\OneScript\lib\oint\core\Modules\OPI_FTP.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleCalendar.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleDrive.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleSheets.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GoogleWorkspace.os c:\1C\OneScript\lib\oint\core\Modules\OPI_GreenAPI.os c:\1C\OneScript\lib\oint\core\Modules\OPI_MSSQL.os c:\1C\OneScript\lib\oint\core\Modules\OPI_MySQL.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Neocities.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Notion.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Ollama.os c:\1C\OneScript\lib\oint\core\Modules\OPI_OpenAI.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Ozon.os c:\1C\OneScript\lib\oint\core\Modules\OPI_PostgreSQL.os c:\1C\OneScript\lib\oint\core\Modules\OPI_RCON.os c:\1C\OneScript\lib\oint\core\Modules\OPI_ReportPortal.os c:\1C\OneScript\lib\oint\core\Modules\OPI_S3.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Slack.os c:\1C\OneScript\lib\oint\core\Modules\OPI_SQLite.os c:\1C\OneScript\lib\oint\core\Modules\OPI_TCP.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Telegram.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Twitter.os c:\1C\OneScript\lib\oint\core\Modules\OPI_Viber.os c:\1C\OneScript\lib\oint\core\Modules\OPI_VK.os c:\1C\OneScript\lib\oint\core\Modules\OPI_VKTeams.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexDisk.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexID.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexMarket.os c:\1C\OneScript\lib\oint\core\Modules\OPI_YandexMetrika.os c:\1C\OneScript\lib\oint\tests\Modules\Coverage_ЗапускВсехТестов.os c:\1C\OneScript\lib\oint\tests\Modules\internal\OPI_Тесты.os c:\1C\OneScript\lib\oint\tests\Modules\internal\OPI_ТестыCLI.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ЗапросыHTTP.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ЗапросыSQL.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_Компоненты.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ПолучениеДанныхТестов.os c:\1C\OneScript\lib\oint\tools\Modules\OPI_ПреобразованиеТипов.os c:\1C\OneScript\lib\oint\tools\Modules\internal\Classes\OPI_HTTPКлиент.os c:\1C\OneScript\lib\oint\tools\Modules\internal\Modules\OPI_Инструменты.os c:\1C\OneScript\lib\oint\tools\Modules\internal\Modules\OPI_Криптография.os

Я начинающий пользователь 1Скрипт, у меня нет других примеров, где подключается больше одной библиотеки, а то проверил бы на них.

Добавляю. Возможно, имеется в виду, что в библиотеке есть package-loader.os? В InternetMail есть такой, вот его содержание: Процедура ПриЗагрузкеБиблиотеки(Знач КаталогБиблиотеки, СтандартнаяОбработка, Отказ)

СтандартнаяОбработка = Ложь;
Отказ = Ложь;

ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогБиблиотеки, "bin", "MailComponent.dll"));

КонецПроцедуры

andreynedogonov-bit avatar Oct 08 '25 12:10 andreynedogonov-bit

Есть известные проблемы с упаковкой таких dll в exe. Это, так скажем, нетипичный случай и в некоторой мере "негарантийный"... Надо копать и разбираться.

EvilBeaver avatar Oct 08 '25 16:10 EvilBeaver

ОбъединитьПути(КаталогБиблиотеки, "bin", "MailComponent.dll")

При упаковке в exe вот этот код уже работать не будет, т.к. нет каталога bin и вообще, лоадер не запускается. Библиотека должна упаковывать такие вещи в "макеты". Ну короче, все не так просто с dll и упаковка в exe таких приложений нетривиальная.

EvilBeaver avatar Oct 08 '25 17:10 EvilBeaver

Спасибо за разъяснения, буду искать обходные пути.

andreynedogonov-bit avatar Oct 09 '25 08:10 andreynedogonov-bit

InternetMail вроде библиотека от @dmpas?

nixel2007 avatar Oct 11 '25 04:10 nixel2007