Блоки регистра к GAC использование InstallShield

Я должен зарегистрировать несколько блоков к GAC использование InstallSheild, и также мне нужны блоки, которые будут скопированы на INSTALLDIR также. Что лучший способ состоит в том, чтобы сделать это? Также я должен назвать regasm.exe для блока; я могу сделать это использование InstallShield?

Мне действительно нужен новый 'компонент' для каждого блока, который должен быть зарегистрирован в GAC?

8
задан Cornel 26 March 2010 в 16:14
поделиться

2 ответа

В этом ответе предполагается, что вы используете тип проекта установщика Windows.

1) Создайте компонент для каждого файла DLL, сделайте его ключевым файлом и установите папку назначения GlobalAssemblyCache. Это указывает установщику Windows использовать стандартное действие MsiPublishAssemblies, которое, в свою очередь, вызывает Fusion для регистрации сборки в GAC. Фактически это то, что GACUTIL делает для вас. Помните: GACUTIL не распространяется. Если в сборке есть сопутствующие файлы, добавьте их как сопутствующие файлы к тому же компоненту.

2) Если ваша сборка - ComVisible, создайте компонент для каждой DLL, пометьте его как ключевой файл и установите .NET ComInterop в значение true. Это приведет к извлечению информации COM во время сборки и укажет установщику Windows использовать стандартное действие MsiPublishAssemblies для записи информации в реестр. Примечание. Если у вас есть собственный код пользователя в разделе регистрации сборки, он не будет записан. Согласно MSDN regasm / regfile не выполняет этот путь кода. Вам придется вручную ввести эту информацию в представление реестра InstallShield для этого компонента.

3) Да, вы можете развернуть сборку со строгим именем как глобально, так и / или приватно. Будет ли отображаться частный или нет, зависит от того, имеет ли сборка со ссылкой UseSpecific или нет.

11
ответ дан 5 December 2019 в 15:22
поделиться

Да. Что касается системы, это два разных файла. AFAIK, вы не можете иметь файл в GAC и одновременно иметь его в случайной папке на целевом компьютере.

Теоретически, если он находится в GAC, он вам не нужен в каталоге продукта.Если он находится в GAC, это будет загруженная версия, а не та, которая находится в каталоге продукта. Однако становится сложнее, если вам нужно, скажем, зарегистрировать его и для COM-взаимодействия. Возможно, я ошибаюсь, но когда я попытался, мне пришлось иметь оба: один в каталоге, другой в GAC.

Но на самом деле он вам, вероятно, не нужен в GAC, если он вам нужен в каталоге продукта. Если он загружается из любой программы где угодно и всегда, то GAC - подходящее место для этого. Если вы помещаете его в GAC для взаимодействия COM, в этом нет необходимости; зарегистрировав его, указав на папку, в которой вы установили, он будет работать нормально, если вы правильно настроили installshield.

0
ответ дан 5 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: