|
|
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
Есть клиентское приложение, написанное на VB 6.0, и работающее с базой данных на сервере MS SQL Server. На данный момент обновление клиентских приложений происходит путем копирования новой версии файла на машины. Но почти всегда бывает так, что какие-то машины не включены, получается рассинхронизация версий. И если изменения в программе коренные (например, вызов новой хранимой процедуры на сервере), то, как правило, старая версия уже не работает. Как сделать так, чтобы при запуске программа проверяла, есть ли новая версия, и заменяла себя этой новой версией? Я так понимаю, что сама себя она заменить не сможет, т.к. ОС не даст доступ к запущенному файлу. Как вариант - сделать другой exe'шник, который и будет выполнять обновление приложения при запуске. Опять же момент: откуда брать информацию о наличии новой версии и сами файлы? С базы MS SQL или можно обойтись *.ini файлом в расшаренной папке? Наверняка многие сталкивались с этим, и, так или иначе, решали эту проблему. Поделитесь, если не жалко. P.S. Поиском на форуме не нашел ответа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 08:58:57 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
Можно сделать всю логику и формы в длл и загнать ее в двоичное поле на сервере, а в exe-клиенте только проводить авторизацию, забирать с сервера длл, перезаписывать, перерегистрировать, если изменился интерфейс (лучше делать неизменным), и подключаться через CreateObject. А вообще как хочешь, так и делай. Сам же привел способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 11:21:56 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
Узнал такую особенность Windows - запущенный exe'шник она удалить не даст, но переименовать - пожалуйста! Значит, можно из приложения самого себя обновить через переименование... Antonariy , спасибо, это хорошая идея. Может быть в следующем проекте я ей воспользуюсь. Сейчас уже все слишком далеко зашло, чтобы переделывать :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 11:37:24 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
KuzVitЕсть клиентское приложение, написанное на VB 6.0, и работающее с базой данных на сервере MS SQL Server. P.S. Поиском на форуме не нашел ответа...И я тоже не нашел, хотя когда-то упоминал о методе "вытаскивания самого себя за шнурки" (bootstrap). 1. Новую версию выкладываю на тот же комп, на котором находится SQL Server. 2. В момент загрузки приложения проверяется наличие нового exe-шника на сервере (п.1). Если таковой есть, он копируется (без расширения - во избежание конфликта имён) на локальный комп в ту же директорию, что и исполняемое приложение. Затем вызывается внешнее приложение Replacer.exe (ключевое слово для поиска на forum.sql.ru) , а текущий exe-шник немедленно завершает свою работу. 3. Replacer принудительно завершает работу всех экземпляров приложения, дожидается их выгрузки из системы, переименовывает старый exe-шник и добавляет расширение .exe к новой копии. 4. Replacer запускает новое приложение и завершает свою работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 12:10:04 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 12:19:15 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
KuzVit Как сделать так, чтобы при запуске программа проверяла, есть ли новая версия, и заменяла себя этой новой версией? Поделитесь, если не жалко. Я реализовал это следующим образом. 1. Создается дистрибутив, выкладывается на сервер. 2. Его версия и путь к инсталлятору заносятся в табличку master.dbo.versions 3. При запуске каждое приложение сравнивает собственную версию с макчимальной версией, хранящейся в табличке. 4. Если версия устарела - запускается инсталлятор. 5. Инсталлятор перед непосредственно установкой запускает небольшую утилитку, которая завершает все процессы моих программ и выгружается. (исходник могу выложить). 6. Запускается процесс инсталляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 13:06:12 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
Processor1. Новую версию выкладываю на тот же комп, на котором находится SQL Server. А в каком виде - просто в папке, или на FTP? big-duke , спасибо за ссылку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 13:10:49 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
KuzVit Processor1. Новую версию выкладываю на тот же комп, на котором находится SQL Server. А в каком виде - просто в папке, или на FTP? Просто в папочке с текущей датой. Но это не принципиально, можно дистрибутив хоть на SQL Server в поле Image запихнуть :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 13:18:26 |
|
||
|
Обновление клиентских приложений
|
|||
|---|---|---|---|
|
#18+
В общем, сделал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Все работает, спасибо всем за помощь, узнал много нового... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 15:55:18 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33220357&tid=2167340]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 392ms |

| 0 / 0 |
