2010-05-11 8 views
2

Я работаю над программой установки, которая создает файл .msi. С ним связана программа CustomAction, которая написана на C#. В этой программе CustomAction есть три ссылки на COM-объекты, которые необходимы для ее работы. Они заключаются в следующем.Ошибка в файле или сборке Ошибка

  1. Активный DS IIS пространство имен Обеспечить (C: \ Windows \ System32 \ Inetsrv \ adsiis.dll)
  2. для Windows Script Host Object Model (C: \ Windows \ System32 \ wshom.ocx)
  3. NetFwTypeLib (C: \ Windows \ System32 \ FirewallAPI.dll)

Как добавил информации, являются следующие задачи, которые я использую эти библиотеки DLL в моей программе.

  1. Чтобы установить параметры MIME для определенного типа файла.
  2. Чтобы создать ярлык на рабочем столе для папки.
  3. Чтобы зарегистрировать программу в качестве исключения брандмауэра

.

Теперь, вот моя проблема. Когда я перестраиваю программу C# и запускаю программу CustomAction из Visual Studio, она отлично работает, и я могу выполнить три задачи, выполненные как шарм. Однако, когда я действительно создаю .msi и пытаюсь выполнить его и установить программу в свою систему, это дает ошибку. Я использую японскую ОС, поэтому она дает ошибку на японском языке, поэтому я постараюсь перевести сообщение об ошибке на английский, насколько это возможно. Ошибка что-то вроде этого:

*

файл или сборку 'Interop.IISOle, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = нуль', или один из его зависимостей может не загружается. Не удается найти указанный файл.

*

Это конкретное сообщение об ошибке дается, поскольку она имеет отношение к первому DLL (adsiis.dll), потому что это тот, который содержит пространство имен IISOle. Точно так же сообщения об ошибках относятся ко всем трем COM-объектам, на которые я ссылался, из моей программы. Теперь, что я могу понять из этого, так или иначе, когда этот код находится внутри .msi-файла, он не может найти соответствующие COM-объекты. Я действительно смущен, почему это происходит, когда программа установки дает ту же ошибку, когда я пытаюсь установить программу даже на том же компьютере, который я использовал для кодирования CustomAction. Смешно он безупречно работает с интерфейсом Visual Studio. Пожалуйста, помогите мне с этим. Заранее спасибо!

Обратите внимание, что я работаю на Windows Vista Business, но мне нужна настройка, чтобы иметь возможность установить на различных ОС Windows, начиная от Windows Server 2003 до Windows, 7.

+0

Ваши действия работают как отложенные? Кроме того, вам не нужно писать свои собственные действия, по крайней мере, для 2. и 3. используйте Wix! –

ответ

1

Антон, наконец, я узнал, что случилось.

Когда я ссылаюсь, например, на dsiis.dll, тогда Visual Studio размещает модуль Interop, а именно Interop.IISOle.dll внутри каталога bin моей программы CustomAction. Здесь также можно найти файл CustomAction.exe. Он выполняет тот же процесс, когда я ссылаюсь на другие два COM-объекта; wshom.ocx и FirewallAPI.dll. Но моя фактическая программа установки, написанная с использованием Wix, копирует этот файл CustomAction.exe в другой каталог, а MSI использует этот файл CustomAction.exe. Проблема возникает, поскольку Interop.IISOle.dll (и другие) также не может быть найден там. (Сообщение об ошибке сказало, что мне нужно было искать с самого начала, кажется, я был глуп, чтобы не искать его, но думал, что могут быть большие проблемы)

Так вот что я сделал. Я поручил проекту Wix скопировать эти DLL-файлы Interop в том же месте, где находится CustomAction.exe, который используется установщиком. Это так легко разрешило проблему.

Я совершенно новичок, когда речь идет о Wix, плюс нам нужно использовать CustomAction для 2 и 3 по некоторым причинам.

4

Просто столкнулся с этим сегодня. Перейдите в раздел «Включить или отключить функции Windows» и откройте все в IIS, включая материал IIS 6.

Убедитесь, что функция «Совместимость с конфигурацией IIS Metabase и IIS 6» отмечена в разделе «Информационные службы Интернета»> «Инструменты веб-управления»> «Совместимость управления IIS 6».

+0

Спасибо Damian Vogel за конкретный вариант. – maxwellb

+0

Haha thx для упоминания в любом случае, я видел только сейчас, что мое редактирование было отклонено ... «слишком дружелюбным» сообществом. Важно то, что информация не потеряна. –

 Смежные вопросы

  • Нет связанных вопросов^_^