Вопрос: каким образом можно заменить установку ActiveSync (я имею в виду через setup,exe и тому подобное) на копирование нужных файлов в нужныы директории, прописывание параметров в реестра и т.д. (о том что и куда прописывать и копировать просьба подробнее)?
Цель: хочу чтобы пользователю было достаточно установки только моего дистрибутива, дабы не ставить и не возиться с ActiveSync отдельно
Примечание: при работе я использую RAPI
Заранее благодарен...
Калиновский А.И.
22.10.04 21:17: Перенесено модератором из 'C/C++. Прикладные вопросы' — Павел Кузнецов
Re: Работа с RAPI без фактической установки ActiveSync
От:
Аноним
Дата:
21.10.04 13:43
Оценка:
Сомнительно, чтобы это было бы нужным.
Что-то я слабо себе представляю владельца покета,
который бы не поставил бы ActiveSync.
Кроме твоей программы есть еще куча других полезных программ,
которые требуют ActiveSync
Так что если подходить к проблеме прогматично, то проще сказать,
что для твоей программы требуется установленный ActiveSync.
Это "ограничение" практически никого не коснется.
Re[2]: Работа с RAPI без фактической установки ActiveSync
Здравствуйте, Аноним, Вы писали:
А>Сомнительно, чтобы это было бы нужным. А>Что-то я слабо себе представляю владельца покета, А>который бы не поставил бы ActiveSync. А>Кроме твоей программы есть еще куча других полезных программ, А>которые требуют ActiveSync
А>Так что если подходить к проблеме прогматично, то проще сказать, А>что для твоей программы требуется установленный ActiveSync. А>Это "ограничение" практически никого не коснется.
А если подходить к проблеме с точки зрения программиста, то мне требуется максимально упростить процесс внедрения данного продукта и учитывать приходиться разных владельцев покетов... Так что вопрос с повестки дня не снимается, а по прежнему очень актуален...
Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...
Re[3]: Работа с RAPI без фактической установки ActiveSync
Здравствуйте, Kalinich, Вы писали:
K>Здравствуйте, Аноним, Вы писали:
А>>Сомнительно, чтобы это было бы нужным. А>>Что-то я слабо себе представляю владельца покета, А>>который бы не поставил бы ActiveSync. А>>Кроме твоей программы есть еще куча других полезных программ, А>>которые требуют ActiveSync
А>>Так что если подходить к проблеме прогматично, то проще сказать, А>>что для твоей программы требуется установленный ActiveSync. А>>Это "ограничение" практически никого не коснется.
K>А если подходить к проблеме с точки зрения программиста, то мне требуется максимально упростить процесс внедрения данного продукта и учитывать приходиться разных владельцев покетов... Так что вопрос с повестки дня не снимается, а по прежнему очень актуален...
Ну в таком случае тебе придется реализовывать ActiveSync
и протоколы, который он поддерживает. Технически это конечно же возможно,
но неоправдано для обычных разработчиков...
Если ты будешь просто так таскать с собой какую-нибудь dll'ку от ActiveSync,
то это очевидно будет нарушением авторских прав.
Вообще точка зрения программиста не всегда способствует успеху продукта
K>Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...
Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут
и не ждать до конца света...
P.S. Прошу прощения. Первый Аноним был я...
Re[4]: Работа с RAPI без фактической установки ActiveSync
Здравствуйте, bkat, Вы писали:
B>Если ты будешь просто так таскать с собой какую-нибудь dll'ку от ActiveSync, B>то это очевидно будет нарушением авторских прав.
Насчет этого я думаю, что вряд ли, поскольку все необходимые *.lib и *.h файлы можно легко найти в PPC2002 SDK
B>Вообще точка зрения программиста не всегда способствует успеху продукта
А это как раз и не моя точка зрения, мне гораздо проще юзать ActiveSync, просто менеджер проекта предположил, что так будет и проще и красивее, а мое дело маленькое — в его предположение "вдохнуть" жизнь
K>>Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...
B>Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут B>и не ждать до конца света...
Если я не ошибаюсь CeRapiInitEx отличается только тем, что возвращает указатель на структуры типа RAPIINIT, как же ей передать таймер?
//
HRESULT CeRapiInitEx(
RAPIINIT *pRapiInit
);
//
typedef struct _RAPIINIT {
DWORD cbSize;
HANDLE heRapiInit;
HRESULT hrRapiInit;
} RAPIINIT;
//
Я не исключаю, что чего-то не понял и даже буду рад, если это так (куда таймер-то пихать)
B>P.S. Прошу прощения. Первый Аноним был я...
Re[5]: Работа с RAPI без фактической установки ActiveSync
Здравствуйте, Kalinich, Вы писали:
K>Здравствуйте, bkat, Вы писали:
B>>Если ты будешь просто так таскать с собой какую-нибудь dll'ку от ActiveSync, B>>то это очевидно будет нарушением авторских прав.
K>Насчет этого я думаю, что вряд ли, поскольку все необходимые *.lib и *.h файлы можно легко найти в PPC2002 SDK
B>>Вообще точка зрения программиста не всегда способствует успеху продукта K>А это как раз и не моя точка зрения, мне гораздо проще юзать ActiveSync, просто менеджер проекта предположил, что так будет и проще и красивее, а мое дело маленькое — в его предположение "вдохнуть" жизнь
K>>>Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...
B>>Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут B>>и не ждать до конца света... K>Если я не ошибаюсь CeRapiInitEx отличается только тем, что возвращает указатель на структуры типа RAPIINIT, как же ей передать таймер? K>// K>HRESULT CeRapiInitEx( K>RAPIINIT *pRapiInit K>); K>// K>typedef struct _RAPIINIT { K>DWORD cbSize; K>HANDLE heRapiInit; K>HRESULT hrRapiInit; K>} RAPIINIT; K>// K>Я не исключаю, что чего-то не понял и даже буду рад, если это так (куда таймер-то пихать)
Да, я понял, что немного неправильно все понял, вернее не совсем четко была сформулирована вот эта фраза "Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут"...
Речь идет наверное о MsgWaitForMultipleObjects, для которого и нужен HANDLE heRapiInit, который в свою очередь возвращает CeRapiInitEx...
Теперь я правильно понял?
B>>P.S. Прошу прощения. Первый Аноним был я...
Re[6]: Работа с RAPI без фактической установки ActiveSync
Здравствуйте, Kalinich, Вы писали:
B>>>Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут B>>>и не ждать до конца света... K>>Если я не ошибаюсь CeRapiInitEx отличается только тем, что возвращает указатель на структуры типа RAPIINIT, как же ей передать таймер? K>>// K>>HRESULT CeRapiInitEx( K>>RAPIINIT *pRapiInit K>>); K>>// K>>typedef struct _RAPIINIT { K>>DWORD cbSize; K>>HANDLE heRapiInit; K>>HRESULT hrRapiInit; K>>} RAPIINIT; K>>// K>>Я не исключаю, что чего-то не понял и даже буду рад, если это так (куда таймер-то пихать)
K>Да, я понял, что немного неправильно все понял, вернее не совсем четко была сформулирована вот эта фраза "Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут"... K>Речь идет наверное о MsgWaitForMultipleObjects, для которого и нужен HANDLE heRapiInit, который в свою очередь возвращает CeRapiInitEx...
K>Теперь я правильно понял?
Не совсем...
Структуру типа RAPIINIT ты должен сам подготовить.
В ней есть хендл "евента", который позволяет тебе ждать столько сколько тебе нужно
с помощью WaitForSingleObject.
и вв результате ты либо выйдешь по тайм ауту из-за того, что нету коннекта,
либо RAPI выставит твой "евент"
Грубо примерно так:
DWORD timeout=5000; // ждем максимум 5 сек
RAPIINIT rapiInitData = {sizeof(RAPIINIT), 0, 0};
rapiInitData.heRapiInit = CreateEvent(NULL, FALSE, FALSE, NULL);
ResetEvent(m_rapiInitData.heRapiInit);
HRESULT hRes = CeRapiInitEx(&rapiInitData);
if (S_OK == hRes)
{
DWORD dwWaitResult = WaitForSingleObject(m_rapiInitData.heRapiInit, timeout);
if (dwWaitResult==WAIT_OBJECT_0)
{
// есть коннект
}
else
{
// нет коннекта
}
}
else
{
//... проблемы с RAPI, скорей всего нету ActiveSync...
}
Прошу прощения что немного сбил с толку...
Re[7]: Работа с RAPI без фактической установки ActiveSync