InstallShield дублирование файлов
От: sidd  
Дата: 21.06.06 10:21
Оценка:
Пакет инсталляции содержит две Features «Клиент» и «Сервер». Есть группа файлов, которые ставятся и на клиенте и на сервере. Папки установки для Сервера и Клиента разные. InstallShield включает в пакет инсталляции две копии общих файлов. Как сделать, чтобы в пакете инсталляции содержалась одна копия общих файлов и была возможность инсталлировать их и в Клиента и в Сервер.
Заранее благодарен.
Re: InstallShield дублирование файлов
От: WPooh США  
Дата: 21.06.06 11:21
Оценка:
Здравствуйте, sidd, Вы писали:

S>Как сделать, чтобы в пакете инсталляции содержалась одна копия общих файлов и была возможность инсталлировать их и в Клиента и в Сервер.

В инсталяционном пакете есть таблица DuplicateFile. Как именно из интерфейса IS туда занести записи — не помню, попробуйте потыкать разные менюшки.
Успехов!
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС
Re[2]: InstallShield дублирование файлов
От: sidd  
Дата: 22.06.06 08:52
Оценка:
Здравствуйте, WPooh, Вы писали:

WP>Здравствуйте, sidd, Вы писали:


S>>Как сделать, чтобы в пакете инсталляции содержалась одна копия общих файлов и была возможность инсталлировать их и в Клиента и в Сервер.

WP>В инсталяционном пакете есть таблица DuplicateFile. Как именно из интерфейса IS туда занести записи — не помню, попробуйте потыкать разные менюшки.
WP>Успехов!

Спасибо за ответ. В интерфейсе не нашел, занес запись вручную, но работает только при одновременной установке и Клиента и Сервера, а хотелось бы чтобы и при раздельной тоже работало. Подскажите пожалуйста, как этого добится.
Спасибо ещё раз.
Re[3]: InstallShield дублирование файлов
От: WPooh США  
Дата: 23.06.06 11:02
Оценка:
Здравствуйте, sidd, Вы писали:

S>Спасибо за ответ. В интерфейсе не нашел, занес запись вручную, но работает только при одновременной установке и Клиента и Сервера, а хотелось бы чтобы и при раздельной тоже работало. Подскажите пожалуйста, как этого добится.

В общем, идея в том, чтобы настраивать расположение для этих файлов в зависимости от того, какой вариант устанавливается: только сервер или только клиент. В одном из этих случаев указываем, что файлы должны распологаться в соответствующем каталоге. Если же устанавливаются оба, и клиент, и сервер, то включаем DuplicateFiles из одного каталога в другой.
Один из простых вариантов для этой схемы следующий:
1) Создать специальную Directory, которую по умолчанию настроить, допустим, на серверный каталог. Пусть название (ключ, поле Directory) имеет значение ClientServerCommonDir
2) Все общие файлы настроить на установку в директорию с идентификатором ClientServerCommonDir. Это в таблице Component, поле Directory_
3) Компоненты из п.2 (соответствующие общим файлам) настроить на принадлежность обеим feature.
4) В случае, если ставим только клиентские файлы, перенаправляем ClientServerCommonDir на клиентскую директорию (API MsiSetTargetDirectory либо Custom Action типа 35). Это лучше делать после CostFinalize но перед InstallInitialize. Я не помню деталей почему так, просто посмотрел в свою инсталяшку, где я делаю смену директории. В MSDN, наверно, написано.
5) На Action DuplicateFiles вешаем condition, чтобы он выполнялся только в том случае, когда обе feature устанавливаются. Дублирование настраиваем из серверного каталога в клиентский.
5а) Записи в таблице DuplicateFile лучше всего ассоциировать с теми компонентами, из которых ставятся соответствующие файлы. Ну то есть, допустим, protocol.dll ставится компонентом protocol.component, тогда в таблице DuplicateFile у записи копирования protocol.dll поле Component_ должно быть protocol.component, это для чистоты и меньшего гемороя с апгрейдами. Ну и, конечно, это последнее замечание имеет смысл только в том случае, если у вас в инсталяшке соблюдается рекомендация MSFT что каждый компонент должен устанавливать не более одного бинарника.

Если чего не понятно — спрашивайте, я, к сожалению, не Рихтер, язык у меня не такой понятный.

Успехов!
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.