Как автономно от ArcGIS запустить свою программу?

0 голосов
спросил 21 Июнь, 10 от developer195 (560 баллов) в категории Программные продукты Esri
Здравствуйте, помогите, плиз, с задачей: как запустить на компе, на котором нет никаких средств ArcGIS отдельную программу, написанную в Delphi с помощью ArcObjects, что для этого по миниуму надо сделать (что перенести и/или установить на этот комп)?
Спасибо!

27 Ответы

0 голосов
ответил 24 Июнь, 10 от dmitry12081973 (1,920 баллов)
Извините, что вмешиваюсь, попробовал по Вашему совету зарегистрировать структуру ICommand  как:

InvRegistry.RegisterInterface(TypeInfo(ICommand));

Почему-то при попытке такой регистрации программа вылетает с ошибкой.
0 голосов
ответил 24 Июнь, 10 от pooperec (10,820 баллов)
А что должно было произойти?
0 голосов
ответил 25 Июнь, 10 от developer195 (560 баллов)
Я продвинулся дальше - добавил перед кодом
  TAutoObjectFactory.Create(ComServer, TCOM, Class_COM,
    ciMultiInstance, tmApartment)
строку
  RegisterOCX('esriSystemUI.olb'); (в esriSystemUI.olb содержится интерфейс ICommand)

RegisterOCX нашёл в инете:
function RegisterOCX(FileName: string): Boolean;
var
  OCXHand: THandle;
  RegFunc: TDllRegisterServer;
begin
  OCXHand := LoadLibrary(PChar(FileName));
  RegFunc := GetProcAddress(OCXHand, 'DllRegisterServer');
  if @RegFunc <> nil then
    Result := RegFunc = S_OK
  else
    Result := False;
  FreeLibrary(OCXHand);
end;

стало всё нормально

А вот при инициализации класса, например:
  pColor1 := CoRGBColor.Create as IRgbColor;
пишет компилятор, что класс незарегистрирован, пытаюсь, его зарегистрировать как
  RegisterOCX('esriDisplay.olb'); (в этой библиотеке этот класс находится)
но это не помагает.
  Можно узнать, какой утилитой нужно регистрировать класс в данном случае?
0 голосов
ответил 25 Июнь, 10 от pooperec (10,820 баллов)
    **??№;ЫЙ СТЫД!

image

Окей, если Вы пошли этим путём, отлично!

1. Берёте, библиотеки которые у Вас в программе используются, причём не только olb`шки/tlb`шки, но и реальные DLLки....
2. Тратите кучу времени чтобы понять связи между ними (пригодится позже). Формируте список библиотек.
3. Копируете на целевую машину, создаете программу регистрации этих библиотек.
4. Смотрите какие ключи реестра нужны для корректной работы менеджера лицензий, прописываете их.
5. Делаете программу которая сама регистрирует копию (скармливает ключ) для корректного создания объектов и обхода проверок лицензий.
6. Запускаете Ваше приложения.

Правда при этом Вы нарушаете лицензионное соглашение, но это так, к слову...

0 голосов
ответил 25 Июнь, 10 от pooperec (10,820 баллов)
Это путь настоящего самурая! Я должен оставить на нём Вас одного (я недостоин)!
0 голосов
ответил 25 Июнь, 10 от developer195 (560 баллов)
Спасибо, но не издевайтесь, если можно. Я пошёл этим путём, потому что не знаю другого. Если Вы сжалитесь и покажете верный путь, я буду очень благодарен!!!!
0 голосов
ответил 25 Июнь, 10 от pooperec (10,820 баллов)
>не издевайтесь, если можно
Не буду, если Вы перечитаете эту ветку, и поймете, что без внешних библиотек (ArcGIS в данном случае) Ваше приложение, на другой машине не запуститься. В этой ветке Вам давали много ссылок , пройдя по которым Вы поймёте как разворачивать Ваше приложение на другой машине.

И регистрация отдельных библиотек Вам не поможет (если быть до конца откровенным, то может помочь, но только в редких, я бы сказал - уникальных случаях) так как первая внутренняя проверка на лицензию и Ваше приложение "выпадет" с ошибкой, первое обращение с библиотеке в которой храниться недостающий класс или интерфейс, и ошибки будут повторяться....

Для Модераторов - пожалуйста ветку в юмор или флуд...
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...