2016-09-02 9 views
0

Я создаю установщик для 64-разрядного приложения, которое включает в себя тысячи сторонних DLL (~ 2000)Могу ли я выбрать более одного компонента в «Installation Designer»?

В соответствии с лучшей практикой InstallShield каждая DLL должна быть в другом компоненте.

(from doc) «Каждый компонент должен содержать только один переносимый исполняемый файл (файл .exe, .dll или .ocx) или файл WinHelp (файл .hlp)».

Итак, у меня есть тысячи компонентов, которые мне нужно изменить для свойства «64-разрядный компонент» от «Нет» до «Да».

Мастер компонентов не позволяет мне делать это при создании компонентов.

Вопрос: Есть ли способ сделать многоэкранный выбор всех компонентов, чтобы иметь возможность изменять свойство для всех компонентов одновременно? или мне нужно вручную выбрать каждый компонент и изменить свойство?

Примечание: Я знаю, что если 1 компонент отмечен как 64-разрядный, то установка будет «64-разрядной».

Спасибо.

ответ

0

Нет поддержки для многократного выбора компонентов и их редактирования. Однако есть, по крайней мере, три обходных пути с разным уровнем легкости.

  • Изменить столбец атрибутов Component table в Direct Editor. В общем случае вы будете заменять ряд компонентов значением 8 (msidbComponentAttributesSharedDllRefCount) на один, который также включает 256 (msidbComponentAttributes64bit). Если это так, вы можете просто модифицировать их навалом до 264.
  • Используйте свойство интерфейса автоматизации ISWiComponent.Attrib64BitComponent, чтобы изменить свои компоненты с помощью сценария.
  • В InstallShield 2016 или более поздней версии, перед созданием компонентов, установите MsiComponentAttributes в таблице InstallShield до значения, такие как 264.

Обратите внимание, что, прежде чем принимать время, чтобы изменить все компоненты, чтобы быть 64-бит, вы должны убедиться, что вам нужно это сделать. Если эти компоненты устанавливают только DLL в 32-битное расположение файлов и не устанавливают ключи реестра в любые 64-разрядные разделы реестра (включая извлечение COM-файлов, если вы используете COM-извлечение в этих файлах, они, вероятно, do имеют 64-битные ключи реестра и, следовательно, должны быть 64-разрядными), не было бы необходимости отмечать их 64-разрядными.

После того как вы подтвердили, что вам необходимо их изменить, обратите внимание, что если вы ранее выпустили пакет с 32-разрядным вариантом компонента, вам также необходимо создать новый GUID для компонента, как часть следующие правила компонентов.

Обратите внимание также, что, как вы отметите, после того, как вы отметите любой компонент как 64-разрядный, вы должны пометить весь свой пакет как 64-разрядный, и он больше не будет установлен на 32-разрядную машину.

+0

Спасибо, посмотрим, что сегодня; на первый взгляд, это лучшее решение. – Max