|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Предположим прога использует некоторую подсистему-компонент виндоус. Если говорить на языке проги References->Library В моем случае я использую: Microsoft Com Service Extended COM Type Library Соотв. код начинается со строк Код: plaintext 1. 2.
Если этого(в системе) нету то прога соотв. ругается матом: Бла-бла-бла нет такой длл. Как сделать так, чтобы она все же запустилась и продолжила культурный диалог с юзером? Вопрос как-бы общий, в vb это сплошь и рядом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 16:06 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
подключай TypeLib Information (TLBINF32.DLL) и смотри что у тебя есть в системе ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 16:18 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
OK, буду разбираться. 1) А сама эта typelib всегда есть? 2) Ее подключать тоже галкой или работать с ней через API? 3) Ну допустим узнаю, что чего-то нет. А сама прога(с тем чего нет) запустится? Самый примитивный вариант, чтобы запустилась и культурненько сказала юзеру: "Дорогой... Мне кажется у тебя вот етого нету. А не пойти бы тебе на... и не нажать бы там... и не установить бы...ето а? Ну пока..." ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 16:29 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
А зачем это все? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 17:22 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Зачем программа или зачем такие сложности? Программа чтобы общаться с Microsoft Fax, через эти библиотеки можно управлять сервером и т.п. отслеживать процессы, давать задания и много чего еще, напр. конвертация в "корректный" tiff формат. А сложности затем, что вы ставите прогу, а она вам выдает "No bla-bla-bla.dll found", а это извините невежливо по отн. к юзеру. Надо 1)понять 2) объяснить чего не хватает 3) предложить установить 4) установить Или сразу без лишних вопросов предложить вставить win cd и установить, особенно если компонет понятный и не сложный и не sql весом 100mb и т.п., хотя есть проги, кот. и на это способны. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 17:37 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Мне непонятно все равно. Зачем все эти сложности, если для разрешения их существует Setup? Я лично всегда компилирую установочный пакет, который все это и устанавливает, и никогда никаких бла-бла-бла не случается. Вы что, пытаетесь распространять вашу программу без Setup? Это же не .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 18:17 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
OK, мысль вашу понял. Для Setup я использую Smart Install Maker Че-то я не вижу там опции установить Microsoft Fax. В любом случае надо знать хитрую системную команду кот.это делает, ибо опция "команды" там есть. Честно, других инсталяторов не знаю, да и не настолько крут чтобы их покупать. М.б. тогда подскажете правильный путь (общих слов достаточно, с google-м работать умею). P.S.Французская прога(мой пример) кот.сама устанавливает MS fax делает это именно через setup, причем инсталятор очень простенький. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 19:08 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Дмитрий77, Попытайтесь применить стандартный Package & Deployment Wizard, поставляемый с VB6 Enterprise Edition. Если у Вас стоит Visual Studio 6 Enterprise, то он там будет. Он должен подхватить из Вашего проекта все необходимые DLLs. С другой стороны, если Ваш проект их не использует, но предполагает наличие DLLs из Microsoft Fax на машине клиента, то такие вещи тоже решаются. Но, если Microsoft Fax есть продаваемая за деньги часть его оффисного пакета, как например Word, и он нужен полностью, а не только его какие-то библиотеки, то как же Вы собираетесь его распространять? Если Вы воспользуетесь Package & Deployment Wizard, то там найдете возможность добавить в установочный пакет и те DLLs, которых нет в Вашем проекте. Они потом будут установлены на клиенте, если их там не будет или Ваши окажутся новее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 19:50 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Конкретно в моем случае Microsoft Fax Service должен стоять на PC. И именно не отдельно вытащенные библиотеки, а целиком как программа, потому как моя программа (вернее одна из ее частей) предполагает использование сервиса в целом. Другое дело, что установка этого компонента (приложения, а не отдельно выдернутой dll) автоматически гарантирует наличие искомой. VladConnДмитрий77, Попытайтесь применить стандартный Package & Deployment Wizard, поставляемый с VB6 Enterprise Edition.... Но, если Microsoft Fax есть продаваемая за деньги часть его оффисного пакета, как например Word, и он нужен полностью, а не только его какие-то библиотеки, то как же Вы собираетесь его распространять? Нет, это часть продаваемой за деньги Windows, такая же как блокнот или paint. он есть в xp, и есть в 2003, интерфейс чуть разный, есть различия в количестве факс-линий (xp-1 2003-сколько хочешь), но библиотеки полностью совместимы и взаимозаменяемы проверено, и используется одинаково. В висте тоже что-то такое есть, но это отдельный вопрос, им пока не занимался. По сути инсталятор должен сделать следующее: Пуск->Настройка->Панель управления->Установка и Удаление программ->Установка компонентов Windows->Службы факсов->Ставим галку->Далее... Для работы программы, чтоб не ругнулась, одной dll , конечно хватит, но для реализации идеологии нужно именно то о чем написал. Package & Deployment Wizard-посмотрю, но не уверен что оно сумеет компонент виндов целиком установить... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2009, 04:26 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Но раз это часть продаваемой за деньги Windows, то как же Вы его будете распространять? Без ведома Microsoft? Технически то, что Вы хотите, легко осуществить. Заверните Ваш Setup.exe в простенькую MySetup.exe, внутри она (MySetup) лезет в системные директории, ищет DLL и OCX из MS Fax, если не находит, предлагает его установить с установочного диска клиента или что-то в этом роде. Далее запускает собственно Setup.exe Вашего приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2009, 09:31 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Я к тому, что установка целиком компонентов Windows вряд ли может являться задачей Вашего приложения. Скорее всего, это будет нелегитимно. Вы можете написать на упаковке требования, предъявляемые к системе Вашим продуктом, это да. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2009, 09:42 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Что-то мы не о том. Если win уже куплен и установлен, то никакого криминала в установке его компонента я не вижу. Как проверить наличие библиотеки, я вашу очевидную идею (проверить ее в %system% ) понял. Как программно сделать Пуск->Настройка->Панель управления->Установка и Удаление программ->Установка компонентов Windows->Службы факсов->Ставим галку->Далее...? Я в google рылся, но вы же понимаете, что он выдаст на запрос "Windows+Components+installation"-кучу тупых ссылок как устанавливать сам win... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2009, 14:05 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Как всегда все сам. http://support.microsoft.com/kb/222444 Код: plaintext 1. 2. 3. 4. 5. 6. 7.
В указанной статье конечно особо порадовала фраза... Примечание. Эта процедура не поддерживается такими программами, как Microsoft Fax Service, Windows Media Player, COM+ и Distributed Transaction Coordinator, и не работает в них. Данные компоненты необходимы для работы системы и удалению не подлежат. Врут, поддерживаеся. Правда там внизу написано что вся статья касается win 2000. Для проверки открыл setup-ник вышеупомянутой французской проги в текстовом редакторе, и радостно обнаружил там именно это: Код: plaintext 1. 2.
Полагаю наличие в системе команд cmd и echo и sysocmgr не надо проверять и их использование microsoft-ом не карается? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 01:51 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Это команды системы DOS, нет, не карается. Microsoft никого и не карает никогда, это частный бизнес. Успехов :0) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2009, 17:30 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Дмитрий77Если этого(в системе) нету то прога соотв. ругается матом: Бла-бла-бла нет такой длл. Как сделать так, чтобы она все же запустилась и продолжила культурный диалог с юзером? Вопрос как-бы общий, в vb это сплошь и рядом. А вот так нормально для проверки? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Или LoadLibrary это перебор? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2012, 23:03 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Дмитрий77Или LoadLibrary это перебор? Ну, перебор как бы ощущается уже при тестировании. Выражается в том, что пока полностью не закрою VB-студию (при уже завершившейся проге), не могу заменить bla-bla.dll в папке с программой. М.б так лучше? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
По крайне мере студию закрывать не надо. Что вообще дает LoadLibrary и зачем она нужна? Пользуюсь API много, но никогда этой ф-цией не пользовался. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2012, 01:31 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Дмитрий77, нормально, в C/C++ стандартный приём. Просто LoadLibrary(ExW) скрыта в VB за Declare и References, и совместное применение FreeLibrary со стандартными механизмами может привести к краху процесса, если быть неосторожным. Что даёт LoadLibrary? Динамическую загрузку исполняемого модуля (и его dependencies) в адресное пространство своего процесса (если это ещё не сделано), и увеличение счётчика его использования. Но подробнее объясняеЦЦа известно где. в эмэсдеэнЕ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2012, 03:07 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
ЦЦанормально, в C/C++ стандартный приём.Из с-шного примера и стырил.ЦЦаЧто даёт LoadLibrary? Динамическую загрузку исполняемого модуля (и его dependencies) в адресное пространство своего процесса (если это ещё не сделано), и увеличение счётчика его использования..Т.е. при первом вызове API делается то же самое?ЦЦасовместное применение FreeLibrary со стандартными механизмами может привести к краху процесса, если быть неосторожным.Там куда вставил (перед первым вызовом API) к крашу не приведет? Или вообще зря (если с dll все в порядке) М.б. вставить в процедуру закрытия приложения? В самый конец (когда коллбэк к этой dll уже обнулен и т.п.)? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2012, 05:32 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
1. запуск первого exe - проверка установленных компонентов можно его оформить как заставка... 2. первый пункт запускает рабочий exe если проверки пройдены...ну наверно будут проблемы с депом....у многих он вкрячен по умолчанию ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2012, 09:57 |
|
Как при старте проги проверить наличие библиотек-компонентов и т.п. в системе?
|
|||
---|---|---|---|
#18+
Дмитрий77Т.е. при первом вызове API делается то же самое?При первом вызове функции, объявленной через Declare, вызываеЦЦа LoadLibrary(ExW) и GetProcAddress, адрес функции запоминаеЦЦа, делаеЦЦа вызов функции. Повторный вызов идёт уже по запомненному адресу. Следствия два: 1) счётчик использования исполняемого модуля равен количеству вызванных функций 2) если ручками хочеЦЦа выгрузить модуль, то надо вызывать FreeLibrary соответственное количество раз. После того, как модуль выгружен, его (ранее вызывавшиеся (только ?)) функции вызывать нельзя, а то процесс примет ислам.Дмитрий77Там куда вставил (перед первым вызовом API) к крашу не приведет? Или вообще зря (если с dll все в порядке) М.б. вставить в процедуру закрытия приложения? В самый конец (когда коллбэк к этой dll уже обнулен и т.п.)?Не приведёт. Да где угодно не приведёт (по крайней мере, в рамках обычной программы на VB). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 11:38 |
|
|
start [/forum/topic.php?fid=60&gotonew=1&tid=2157454]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 471ms |
0 / 0 |