Спасибо за советы. Выбрал 1-ый. В досовском этой проблемы не было
поскольку там так и стояло -
3 штуки в одном, а в CW5.5 эту установку не удосужился сделать.
Насколько я понимаю, это временное решение проблемы. Как только количество
дорастет до необходимого, проблема снова возникнет.
Может, проще головной сырцовый модуль переименовать, а имя проекта оставить
прежним? Если я правильно понял, Progr303 - это имя экзешника, и оно вовсе
не обязано совпадать с именем сырца
WBR,
Igor Timofeev
Зачем?
Ну хотя-бы для того, чтобы _большую_ программу можно было разрабатывать
коллективно. Чтобы модификация формы одного выходного документа не требовала
полной перекомпиляции многомегабайтного приложения. Чтобы новые фичи
(репорты в первую очередь) можно было добавлять адонами ничего не меняя в
старом приложении кроме настроек в конфигураторе.
Чтобы приобрести массу новых и ненужных знаний поработе инсталляторов?
Знания не бывают лишними. Равно как и стандартный (привычный) инсталяционный
интерфейс, имхо.
И чтобы в самый ответственный момент
у юзера оказалась старая версия библиотеки?
Это легко контроллируется шаблончиком с помощью CRC32. (лежит на
ккларионлайфе). При генерации ехе-шника подсчитываешь CRC всех длл-ек и
сравниваешь с тем что получается в рантайм. Одна строчка кода. Заодно
получается контроль на заражения/взломы.
WBR,
Nick Tsigouro
Ну хотя-бы для того, чтобы _большую_ программу можно было разрабатывать
коллективно.
Не аргумент. Более того - неправильная организация работы.
Есть VCS для multideveloper design.
(Утрирую, конечно)
Чтобы модификация формы одного выходного документа не требовала
полной перекомпиляции многомегабайтного приложения.
Э... С чего бы вдруг? Добавление новой процедуры - понимаю.
А модификация? Не понимаю...
Чтобы новые фичи
(репорты в первую очередь) можно было добавлять адонами ничего не меняя в
старом приложении кроме настроек в конфигураторе.
Хм... Больше настроек - больше узких мест...
Знания не бывают лишними. Равно как и стандартный (привычный)
инсталяционный
интерфейс, имхо.
Не всегда. Например, установка программ юзеру запрещена.
А копирование - разрешено. Проще настроить скрипт (батник)
копирования при загрузке. И тянуть целиком актуальный exe.
Это легко контроллируется шаблончиком с помощью CRC32. (лежит на
ккларионлайфе). При генерации ехе-шника подсчитываешь CRC всех длл-ек и
сравниваешь с тем что получается в рантайм. Одна строчка кода. Заодно
получается контроль на заражения/взломы.
Ну, получишь сообщение "Нет нужной DLL". Хорошо, если ты
получишь. А если тупой юзер? Например, подключил я zlib.dll
А обновление было как раз копированием exe. Когда версия
была откомпилирована, большая часть клиентов была отключена.
Что получилось? Получилось, что отключенные клиенты затянули
к себе при включении неработоспособную версию...
С уважением,
В.Смелик
Э... С чего бы вдруг? Добавление новой процедуры - понимаю.
А модификация? Не понимаю...
Ну, например, изменение типа передаваемых параметров. Решили в одной процедуре добавить параметр - изменился Map и поехало...
Кстати, а что делать, если в DLL изменился тип экспортируемой процедуры - править её описание в вызывающих модулях как-то
некрасиво.... Может быть,есть какая-нибудь незамеченная фича?
Хм... Больше настроек - больше узких мест...
Почему обязательно настройки? Есть, например, Report.dll и в ней ровно одна экспортируемая процедура ReportMenu. А вот из неё отчёты и
вызываются. Столько, сколько надо.
А обновление было как раз копированием exe. Когда версия
была откомпилирована, большая часть клиентов была отключена.
Что получилось? Получилось, что отключенные клиенты затянули
к себе при включении неработоспособную версию...
Несерьёзно. Можно в процедуру обновления добавить ещё и копирование всех DLL. из нужного каталога. Кстати, а что делать, если тебе
действительно нужна Zlib.dll?
У нас сейчас примерно полсотни проектов ведётся одновременно и сделана специальная программа только для обновления, заменяющая
Exe/Dll/ttf/ocx и так далее из разных каталогов. Собственно, вопрос о преимуществах Local- и Standalone сборок достаточно отображён в
документации.
---------------------------------------
C уважением,
Юрий Философов
(Добавление)
Пришлось переименовать APP, сделав имя без номера.
Вопрос: Можно-ли обойтись без переименования ?
Можно. Порядок именования генерируемых модулей определяется в шаблоне
#APPLICATION:
#REPLACE(%Module,%BuildFile) #! Replace the existing
file
Используется имя модуля из проекта. Можно
а) исключить из проекта конфликтный модуль переименовав его или удалив,
предварительно перенеся процедуры в другие модули.
б) изменить порядок формирования имени файла. Напр.
#SET(%ValueConstruct,Sub(%Module,6,3) & Sub(%Module,1,5) &
Sub(%Module,9,12))
#REPLACE(%ValueConstruct,%BuildFile) #! Replace the
existing file
Или сделать это условно:
Код: Выделить всё
#IF(%Module = %Aplication)
#SET(%ValueConstruct,Sub(%Module,6,3) & Sub(%Module,1,5) &
Sub(%Module,9,12))
#ELSE
#SET(%ValueConstruct,%Module)
#ENDIF
#REPLACE(%ValueConstruct,%BuildFile) #! Replace the
existing file
Тут надо еще проверить, какое имя получит линковщик. Боюсь, что %Module.
Тогда так не получиться.
в) 300 модулей для приложения имхо многовато. Я бы разбил на dll-ки
г) > Пришлось переименовать APP, сделав имя без номера.
Нормальный вариант. Номер можно вынести в имя рабочего каталога, а ехе-шник
с правильным именем получать сразу, если в проекте указать имя с номером.
Было такое у кого или нет?
Нет.
а) Административный раж моих начальников даже с учетом секретности до такой
дури не доходил
б) Никогда не делаю проги на 300 модулей.
Похожая проблема возникает когда в одном каталоге делаешь несколько dll для
одного приложения. Хочется в 8-ми знаках имени и от приложения что-то
оставить и от функционала dll тоже и по 5-и первым знакам иметь отличие.
WBR,
Nick Tsigouro
(Добавление)
Кстати, а что делать, если в DLL изменился тип экспортируемой
процедуры - править её описание в вызывающих модулях как-то
некрасиво.... Может быть,есть какая-нибудь незамеченная фича?
Собственно, вот и узкое место. Либо мы бы получили ошибку
на этапе компиляции, либо на этапе тестирования... Что лучше?
Несерьёзно.
Да я понимаю

Говорил же - утрирую.
Многие задачи требуют multi-DLL. Но без нужды
их плодить... 2-3 сотни процедур прекрасно могут
жить в одном app. А если начать цеплять чужие библиотеки,
то можно и свою задачу на куски резать... А можно и не резать.
Кстати, а что делать, если тебе действительно нужна Zlib.dll?
См. выше.
Кста, если у меня задача собрана в Local-модели, возможны ли
грабли с той же zlib.dll? Надеюсь - нет...
У нас сейчас примерно полсотни проектов ведётся одновременно
и сделана специальная программа только для обновления, заменяющая
Exe/Dll/ttf/ocx и так далее из разных каталогов.
Вам деваться некуда... Но, согласись, геморрой-то лишний.
И CM тебе пришлось писать, и инсталляторы изучать, и
программы из-за чужих библиотек не столь надежны, как
хотелось бы...
(главное слово - хотелось бы. Программы Юрия весьма надежны)
Собственно, вопрос о
преимуществах Local- и Standalone сборок достаточно отображён в
документации.
Я бы сказал - на библиотеки нужно делить только тогда,
когда некуда деваться. До этого момента - не надо этого
делать.
С уважением,
В.Смелик
(Добавление)
Не аргумент. Более того - неправильная организация работы.
Есть VCS для multideveloper design.
(Утрирую, конечно)
Очень спорно. Это я на счет неправильной организации. Сильно зависит от
требований. (Напр. режима секретности).
И совершенно точно требует доп. затрат.
Э... С чего бы вдруг? Добавление новой процедуры - понимаю.
А модификация? Не понимаю...
Я тоже не понимаю, чего это ЦБ в свое время задумал платежки менять... А еще
есть налоговики, таможеники, пенсионщики... Если у них не будет зуда к
формотворчеству, это ж им придется делом зарплату оправдывать и половину
начальников увольнять...
Хм... Больше настроек - больше узких мест...
Давай уберем все настройки из шаблонов

))
Не всегда. Например, установка программ юзеру запрещена.
А копирование - разрешено.
Инсталляция клашиных программ с точки зрения предоставленных прав за очень
редким исключением ничем не отличается от копирования или разархивирования
файлов. А если всерьез запрещено по сути, то пусть установкой занимается
тот, кому положено, и нефиг юзеру в этом потокать.
Проще настроить скрипт (батник) копирования при загрузке.
- Проще в диалоге выбрать 1-2 каталога для проги и для базы, чем настраивать
скрипт. К скрипту еще инструкция по настройке нужна.
- Инсталлятор может посмотреть в реестре, куда была установлены предыдущая
версия проги и предложить по умолчанию поставить туда же.
- Инсталлятор может сразу зарегистрировать идущие в комплекте OLE/OCX, и
сделать ряд других необходимых системных настроек.
- Инсталятор ДОЛЖЕН прописать в реестр процедуру деинсталляции. Это
стандартное виндовское требование.
И тянуть целиком актуальный exe.
WISE делает 1 файл, если ты не попросил разбить инсталлятор на дискетты.
Ну, получишь сообщение "Нет нужной DLL".
Продолжаю текст сообщения. "Произведите повторную установку программы с
помощью дистрибутивного комплекта"
А начало у меня звучит так. "Обнаружена неправильная контрольная сумма файла
... Возможно неправильная версия или программа подверглась вирусной атаке."
И дальше НЕ ПРОЙДЕШЬ. Никаких проблем при смешении версий не бывает.
А если тупой юзер? Например, подключил я zlib.dll
А обновление было как раз копированием exe. Когда версия
была откомпилирована, большая часть клиентов была отключена.
Что получилось? Получилось, что отключенные клиенты затянули
к себе при включении неработоспособную версию...
Не очень понял проблему, но не бывает такого при использовании инсталятора.
- EXE никто не может скопировать просто потому, что для этого как минимум
нужно unwize попользовать.
- Инсталляция на сетевой диск не пройдет, если хоть один юзер работает.
ЕХЕ-шник будет захвачен. Поэтому начинаем установку именно с него.
ИМХО проблем может быть только меньше, а не больше. В частности, если dll-ки
подгружаются динамически, и изменения небольшие (типа поменялась/добавилась
форма док-та) то новые версии dll-ей можно подкладывать никого не выгоняя.
Когда юзер очередной раз обратится к проге, он просто подгрузит новую версию
_процедуры_ из новой dll. Ему даже не нужно прогу перезапускать. Upgrade в
этом случае происходит предельно мягко.
Во всяк случае у меня по сравнению с клипперистами было именно так. Строя
дистрибутив отлаженным скриптом у меня никогда не болела голова, что я
что-то забыл, или что-то положил не то, или лишнее, или не той версии. А у
админа никогда не болела голова, как и куда его устанавливать.
WBR,
Nick Tsigouro
Написал: ClaList(2)