Непонятно также если Viru пишет, что реализовать можно на любом языке, но потом оказывается что arx и лисп не могут без .NET.lisp однозначно не может самостоятельно использовать это API - ну нет у него таких возможностей. А вот на arx можно сделать, но (!!!) готовый пример (sample) от них использует .NET, так как это намного проще и в нём уже есть все готовые библиотеки.
1. NET приложение это программный файл, но с другим расширением, c каким?Обычно dll, хотя расширение не принципиально. Можно и exe.
2. Как его загружать из лиспа в Автокад, поскольку в лиспе будет проверка? По типу как arx файлы - arxload().Командой NETLOAD. А если ты делаешь BUNDLE, то там это совсем просто.
3. Как вообще компилировать проект .NET если он вообще не открывается в VS 2015. Я же надеюсь запускать и поэкспериментировать в 2017 Автокаде. Кстате если приложение для Автокадов 2013-2017 это что нужно также как arx компилировать на трех VS.Не понял. Что значит не открывается?
Кстате если приложение для Автокадов 2013-2017 это что нужно также как arx компилировать на трех VS.Желательно. Хотя вероятно достаточно и одного.
5. Кроме .NET какой язык еще может вызывать web based API? Может быть обычный Javascript?Зачем тебе еще какие-то заморочки если тебе нужно это использовать в lisp/arx?
3. Как вообще компилировать проект .NET если он вообще не открывается в VS 2015. Я же надеюсь запускать и поэкспериментировать в 2017 Автокаде.Открыл проект в VS 2015, изменил пути к .NET-сборкам AutoCAD (в каталоге ObjectARX\inc). И вуаля:
Вариант когда в ответ присылают 7-8 ссылок на ресурсы объясняющие частями одну данную тему не подходит - трудно четко представить что нужно и что точно делать.Увы, но чаще всего именно так и бывает. Так что придётся приложить усилия, потратить время и добиться результата.
У меня проект не открывается. Новая тема, нечего больше сказать, может vs не полный, не знаю.Какой файл открываешь и какое сообщение об ошибке? Открывать нужно было файл \source\NET\EntitlementAPI_AutoCAD.sln
А нельзя было Автодеску сделать для людей не (TestEntitlementLisp) а ту же функцию лиспа (либо arx) но с параметрами индентификатора приложения и т.п. Раз уж все равно она уже реализована. Чтобы вообще не лезть в .NET тем кто никогда с ним не имел дело. Тогда бы можно было только распространять готовые откомпилированные .NET приложения для текущих версий Автокада.Это вопрос риторический. Не сделали - значит решили, что она не нужна достаточному количеству разработчиков.
Чувствую времени нужно немерено чтобы разобраться и в NET и вообще в эффективности такой защиты.На то, чтобы заставить работать этот пример будет достаточно одного дня. Тем более, что C# достаточно схож с C++.
изменил пути к .NET-сборкам AutoCAD (в каталоге ObjectARX\inc)как я писал выше.
Старт —> Выполнить —> regsvr32 %SystemRoot%\System32\msxml3.dll
Старт —> Выполнить —> regsvr32 %SystemRoot%\SysWOW64\msxml3.dll
А нельзя было Автодеску сделать для людей не (TestEntitlementLisp) а ту же функцию лиспа (либо arx) но с параметрами индентификатора приложения и т.п. Раз уж все равно она уже реализована. Чтобы вообще не лезть в .NET тем кто никогда с ним не имел дело. Тогда бы можно было только распространять готовые откомпилированные .NET приложения для текущих версий Автокада.Стимулируют переход программистов на .NET и другие, более подходящие для серьезного программирования инструменты. Раз уж доросли до выкладывания приложений в магазин и их защиты, то необходимо освоить .NET хотя бы на уровне "скомпилировать готовый проект".
Вот пример от ADN DevTech: https://github.com/ADN-DevTech/EntitlementAPI/tree/master/Autodesk%20EntitlementAPI_AutoCAD.bundle/Contents/sourceБлин я даже скачать не знаю как :-(
Блин я даже скачать не знаю как :-(Заходишь сюда:
Не проверял, но думаю что должно быть так:Что-то ему так не нравится :-(Код - C# [Выбрать]В функцию должен быть передан как минимум один строчный аргумент.
String appID = "<appstore.exchange.autodesk.com:" + args[0].Value.ToString() + ">";
Но может user не очень опытный и в душе не представляет как в неё входить...Лучше с таким не иметь дела. Боюсь, что и в остальном с ним будут проблемы.
Или опять из Lisp это окно ни как не вызвать?Лучшее из того, что я смог придумать, это запустить команду _ONLINEOPTIONS
Лучше с таким не иметь дела. Боюсь, что и в остальном с ним будут проблемы.Пользователей нужно всяких любить :-)
Такой ещё вопрос возник, как проверить есть ли вообще доступ к интернету?в Win API есть функция InternetGetConnectedState. достучаться до нее можно практически с любого языка программирования. вот только смысла в этом нет в данном случае никакого :)
Такой ещё вопрос возник, как проверить есть ли вообще доступ к интернету?1. Зачем?
Зачем?В случаи конкретно с "временным" лицензированием, думаю не зачем, там нужно каждый раз проверять, не истекло ли время, опять же покупка подписки на месяц, не должна обязывать пользователя быть онлайн весь этот месяц?
А если интернет есть, а конкретные сайты / IP заблочены или самим пользователем, или админами, или провайдером, то к какой категории это отнести?Спасибо так и на писал, либо с интернетом беда, либо к админу бегите :-)
они обычно длинные и интересныепостараюсь и в этот раз оправдать оказанное доверие :):):)
Но ссылка не работает :-(:o как не работает. я вот только что по ней и правой и левой кнопкой клацал - открывает в новом окне. потом скопировал текст ссылки в буфер и вставил в новое окно браузера. тоже открылась страница.
верю что проще было бы всё это засунуть в один Netувы, тут могу не согласиться. всё написанное на .net (exe,dll) с легкостью можно превратить обратно в проект (даже не в одинокий cs файл, а в полноценный проект с ресурсами). тут вроде бы уже поднимался где-то этот вопрос, так что подробно описывать не буду. скажу только, что есть существенная разница между бинарным исполняемым файлом (например, С++ вариант реализации) и файлом инструкций (C#). бинарный файл - это машинный асемблер, а файл инструкций - это просто слегка ужатый исходный проект в одном файле. следовательно, чтоб разобраться в работе C# dll или exe, нужен простой декомпилятор (кажись даже в поставку самой студии входит, но могу ошибаться), кружка кофе и минимальные знания как сбилдить декомпилированный проект и запустить его под отладчиком. и сразу станет понятно, ЧТО функция должна вернуть, чтоб программа работала исправно. потом, например, затираются внутренности функции и остается только return 100500; :). компилируется и подменяется исходный файл. так что в .net и автодеск и майкрософт советуют писать то, что не жалко. и почаще вставлять комментарии с копирайтами :):):), но никак не защиту
В общем получились вот такие функции1. не проверяется хоть какая-то контрольная сумма dll, а значит её можно просто подменить
Но я вот думаю, а есть смысл на столько заморачиваться с защитой?для пятибаксовых программ - нет, т.к. строчек кода защиты будет раз в надцать больше, чем строчек кода самой программы. а учитывая особенность C#, такую защиту можно рассматривать как подарок для тех, кто не желает писать защиту самостоятельно :):):). скачал демку программы, декомпилировал dll, вставил к себе исходники слегка модернизировав.
для пятибаксовых программ - нет, т.к. строчек кода защиты будет раз в надцать больше, чем строчек кода самой программы. а учитывая особенность C#, такую защиту можно рассматривать как подарок для тех, кто не желает писать защиту самостоятельно . скачал демку программы, декомпилировал dll, вставил к себе исходники слегка модернизировав.Такая защита определённо лучше, чем совсем без неё.
В большинстве случаев, те кто сумеют снять защиту, способны самостоятельно написать аналогичное приложение.Нет, Дима! Это совершенно разные "умения". В остальном же я с тобой согласен.
Такая защита определённо лучше, чем совсем без неё.Такая - это вкратце описанная мной в посте #26 или автором топика в посте #25?
Такая - это вкратце описанная мной в посте #26 или автором топика в посте #25?Я имел в виду "защиту от BearDyugin" :)
По поводу того, что будет трудно разобраться в коде - бред.В чужом коде, да ещё и без комментариев, разобраться порой очень сложно. А если ещё написано начинающим программистом без соблюдения даже правил нотации... В общем, развлечение "на любителя".
Любой уважающий себя программист оставляет тонны комментариев в каждой функции, т.к. во-первых, вернуться к редактированию кода он может и через 3-4 года, а во-вторых, редактировать код может уже не он, а его коллега.Комментарии в dll не переносятся. Они либо в исходниках, либо в отдельном XML-файле (если речь идёт о XML-комментариях).
Комментарии в dll не переносятся. Они либо в исходниках, либо в отдельном XML-файле (если речь идёт о XML-комментариях).Это 100% сведения или так, разговор поддержать? ;D
Это 100% сведения или так, разговор поддержать?Ну а как иначе-то? Компилятор переводит код в IL. Исходники внутрь DLL не помещаются. Откуда там взяться комментариям? Они, как и директивы препроцессора и т.п. элементы - только в исходном коде.
UUIDЯ наоборот хотел отвязаться от привязки к железу, только к пользователю, потому что достали письма от чуваков, которые сменили ПК, сменили место работы. Они почему-то уверены что купив один раз, они получили право пользования на всю жизнь.
Id пользователя это всегда только набор циферок, или буквы тоже могут быть?Могут и буквы присутствовать.
System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "RestSharp, Version=105.1.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл.
Имя файла: 'RestSharp, Version=105.1.0.0, Culture=neutral, PublicKeyToken=null'
в EntitlementAPI_AutoCAD.MyCommands.verifyEntitlement(String appId, String userId)
в EntitlementAPI_AutoCAD.MyCommands.TestEntitlement_Lisp(ResultBuffer args)
в Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo mi, Object commandObject, Boolean bLispFunction)
в Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction)
в Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction)
в Autodesk.AutoCAD.Runtime.CommandClass.CommandThunk.InvokeLisp()
Предупреждение: регистрация привязки сборок выключена.
Чтобы включить регистрацию ошибок привязки сборок, установите значение параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) в 1.
Примечание. Регистрация ошибок привязки сборок может привести к некоторому снижению производительности.
Чтобы отключить эту функцию, удалите параметр реестра [HKLM\Software\Microsoft\Fusion!EnableLog].
Я наоборот хотел отвязаться от привязки к железу, только к пользователю, потому что достали письма от чуваков...Мне кажется, это не совсем правильная концепция... Казалось бы достаточно ввести в лицензионное соглашение пунктик об ограничении количества активаций (например не более трёх). И если подобный "чувак" захочет активировать лицензию большее количество раз - указываешь ему на этот пунктик...
и функция в AutoCAD стала выдавать ошибку...AutoCAD не находит RestSharp.dll. К переименованию это никакого отношения не имеет. Проверь что твоя dll и RestSharp.dll находятся в одном каталоге.
AutoCAD не находит RestSharp.dll. Проверь что твоя dll и RestSharp.dll находятся в одном каталоге.Да, точно, всё дело в этом, но зачем нам 2 dll, можно их как-то в один объединить?
Николай, а подскажи такой вопрос, Id пользователя это всегда только набор циферок, или буквы тоже могут быть?Если ты говоришь про ONLINEUSERID, то только цифры или пустая строка, если пользователь не залогинился.
Да, точно, всё дело в этом, но зачем нам 2 dll, можно их как-то в один объединить?Теоретически это возможно (если не противоречит лицензионному соглашению), но это задача не для твоего уровня знаний C#. Так что брось и делай как полагается. Твоя dll именно потому такая маленькая, потому что RestSharp.dll такая большая. Иначе размер твоей dll был бы (почти) как сумма размеров обеих dll-файлов.
Причём этот RestSharp.dll раз в 10 больше по объёму чем основной dll файл и рядом ещё и RestSharp.xml не маленький лежит...
Казалось бы достаточно ввести в лицензионное соглашение пунктик об ограничении количества активаций (например не более трёх)Так это опять надо эти активации считать... Повторюсь, я лучше больше время уделю порядочным пользователям, чем со всякими негодяями бороться.
Если ты говоришь про ONLINEUSERID, то только цифры или пустая строка, если пользователь не залогинился.Да, про него, перед записью его на ПК для офлайн проверки, решил для пущей надёжности, над ним пару математических операций произвести :-) Но получив ответ от Николая, на всякий случай написал функцию, заменяющею встретившиеся в нём буковки на циферки.
Так что брось и делай как полагается.Ага, знать бы ещё как оно полагается.
Если ты говоришь про ONLINEUSERID, то только цифры или пустая строка, если пользователь не залогинился.Я так поял, вопрос был про userid, который вставляется в запрос https.
Ну а как иначе-то? Компилятор переводит код в IL. Исходники внутрь DLL не помещаются. Откуда там взяться комментариям?Вот прям в выходной день до работы дошел, правда по пути по своим делам ))). Помню же, что таким образом восстанавливал свой случайно удаленный ревитовский проект. И таки да, в дебажной dll всё восстанавливается на 100% относительно исходников - и коментарии и названия файлов проекта. В релизовой версии увы - только код без коментариев и иногда плывет разметка, и все классы объединяются в один файл, но при желании разобраться можно.
перед записью его на ПК для офлайн проверки, решил для пущей надёжности, над ним пару математических операций произвести :-) Но получив ответ от Николая, на всякий случай написал функцию, заменяющею встретившиеся в нём буковки на циферки.тут главное не перемудрить ))).
У моих пользователей тоже есть буквы в id.Значит что-то изменили. Раньше (насколько я знаю) были только одни цифры. В любом случае не стоит надеяться, что этот формат не изменится в будущем, так как это внутренний недокументированный формат Autodesk.
И таки да, в дебажной dll всё восстанавливается на 100% относительно исходников - и коментарии и названия файлов проекта.Думаю, что это благодаря наличию файла pdb рядом с dll.
Повторюсь, я лучше больше время уделю порядочным пользователям, чем со всякими негодяями бороться.Ну человек заплативший деньги не может быть негодяем (по-моему)...:)
Так это опять надо эти активации считать...Ну можно и автоматизировать данный процесс. Существует масса готовых и удобных решений для данных целей. Например вот это (http://www.star-force.ru/products/starforce-proactive/). Продукт безусловно стоит денег (правда не знаю каких ибо сам не пользовал), но судя по описанию и разнообразию "фич" создаётся приятное впечатление. Кстати одно из приложений (http://www.kdmsoft.ru/skleyka.html) (которое я нашел в нашем магазине) защищено таким софтом.
Сегодня хотел прикрутить онлайн проверку к новым приложениям, запускаю проверку, а она не работает!Код - C# [Выбрать]
client.BaseUrl = new System.Uri("https://apps.exchange.autodesk.com");
Думаю как так-то... ищу эту тему, и замечаю что ссылки на проверку может не содержать .exchangeКод - Auto/Visual Lisp [Выбрать]
(alert (strcat " " user_name ", к сожалению, мы не смогли получить доступ к сайту https://apps.exchange.autodesk.com \n Проверьте пожалуйста ваше интернет соединении, \n Либо обратитесь к вашему системному администратору. " ) )
https://apps.autodesk.com/webservices/checkentitlement?userid=201011031059843&appid=7024841255247590068Удалил .exchange и всё заработало.
Удалил .exchange и всё заработало.Насколько я помню это уже давным-давно удалили... И https://apps.exchange.autodesk.com переадресовывает на https://apps.autodesk.com
уже давным-давно удалилиДа, возможно и давно, но в коде 3-х летней давности написано с .exchange
И https://apps.exchange.autodesk.com переадресовывает на https://apps.autodesk.comНу оно и логично было бы... Но у меня не переадресовыввет
Ну оно и логично было бы... Но у меня не переадресовывветХм. Ну чьи тут происки сказать сложно. Нужно экспериментировать, причем с твоей стороны.
Возможно это опять из-за с РКН и Телеграмм...
Возможно это опять из-за с РКН и Телеграмм...Подтверждаю - ссылка битая:
Хм. Ну чьи тут происки сказать сложно. Нужно экспериментировать, причем с твоей стороны.Видимо в Киеве более радужная ситуация...
да ладно ....А город-то какой? Стабильно грузится только через Tor.
А город-то какой? Стабильно грузится только через Tor.