2013-09-03 2 views
1

У меня есть приложение clickonce. Мне нужно зарегистрировать COM видимую DLL для этого приложения. Я использовал регистрацию в коде этого приложения, которое проверяет, было ли это уже зарегистрировано и регистрирует его методом класса RegisterServices RegisterAssembly(). Он отлично работает, если он был запущен администратором. Но я не могу требовать прав администратора для развертывания приложения clickonce. Второй способ, которым я пытался зарегистрироваться, является предварительным условием для моего клика, который потребует администратора и зарегистрирует мою dll. Я создал продукт манифеста для моего обязательного условия применения, но я получил сообщение об ошибке во время развертывания ClickOnceПрикладное развертывание ClickOnce и регистрация COM-библиотеки .NET COM

"Setup has detected that the file '...' has either changed since it was initially published or may be corrupt."

Я понял, что это проблема .NET 4.5 и я должен подписать мою предпосылку. Я подписал его и снова сгенерировал манифест Bootstrapper. После этого я получил следующее сообщение об ошибке во время развертывания:

"File not trusted Error: Setup has detected that the publisher of file cannot be verified"

я должен был установить сертификат на целевой машине, прежде чем я смог успешно развернуть мой ClickOnce. Но установить сертификат перед установкой clickonce на всех целевых компьютерах не удастся. Есть ли у кого-нибудь идеи, как решить эту проблему? Заранее спасибо.

+0

[ComVisible] сборки совершенно несовместимы с ClickOnce. Точка CO - это то, что вы не вносите никаких изменений в конфигурацию машины. Этот вопрос в противном случае имеет мало смысла, кажется, что вы используете .NET-компонент, который является [ComVisible] в приложении .NET. Не делайте этого, просто добавьте ссылку. –

+0

Ханс, мне нужно использовать CO, поэтому я не могу просто добавить ссылку. – Maksidrom

+0

Подписываете ли вы приложение с сертификатом из CA, например VeriSign, или сгенерированным VS? – RobinDotNet

ответ

1

Я поговорил с клиентом ClickOnce в Microsoft по поводу вашего вопроса. Вы используете VS2010 или VS2012? Он говорит, что ошибка, которую вы видите, иногда возникает при использовании VS2010.

Если вы используете VS2010 и .NET 4.5 установлен на этой машине, VS использует задачи сборки из .NET 4.5, и для создания этого пакета установки использует хэш SHA256 в настраиваемом пакете bootstrapper. Но тогда setup.exe загрузит загрузчик и попытается выполнить сравнение SHAH1, которое не соответствует SHAH2.

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

Он также должен работать, если вы подписываете его соответствующим сертификатом CA. В этом случае они не выполняют хеш-проверку, они просто проверяют ее сертификатом.

Если вы хотите продолжить использовать VS2010, вы можете забрать setup.bin из обновления 2 VS2012, поместить его в папку vs2010, а затем он будет работать. Он находится в папке SDK Windows.

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

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