2013-04-03 4 views
4

Я знаю, что это очень часто встречающаяся проблема. Но, есть небольшая разница, мой WPF устанавливается отлично и работает на операционных системах Windows 7 и Windows 8. Но при попытке установить на виртуальную машину с операционной системой Windows XP она дает следующую ошибку:Манифест может быть недействительным или файл не может быть открыт.

Не удается продолжить. Приложение неправильно отформатировано. Детали:

ПЛАТФОРМА ВЕРСИЯ INFO

Windows    : 5.1.2600.196608 (Win32NT) 
    Common Language Runtime  : 4.0.30319.1 
    System.Deployment.dll  : 4.0.30319.1 (RTMRel.030319-0100) 
    clr.dll    : 4.0.30319.1 (RTMRel.030319-0100) 
    dfdll.dll   : 4.0.30319.1 (RTMRel.030319-0100) 
    dfshim.dll   : 4.0.31106.0 (Main.031106-0000) 

SOURCES 
    Deployment url   : file:///S:/K3FrontEnd_NET4/Karacell3.application 

ОШИБКА РЕЗЮМЕ

Ниже приводится краткое описание ошибки, подробные сведения об этих ошибках перечислены позднее в журнале.

* Activation of S:\K3FrontEnd_NET4\Karacell3.application resulted in exception. Following failure messages were detected: 
     + Exception reading manifest from file:///S:/K3FrontEnd_NET4/Karacell3.application: the manifest may not be valid or the file could not be opened. 
     + Manifest XML signature is not valid. 
     + SignatureDescription could not be created for the signature algorithm supplied. 

COMPONENT STORE TRANSACTION FAILURE SUMMARY 
    No transaction error was detected. 

WARNINGS 
    There were no warnings during this operation. 

OPERATION PROGRESS STATUS 
    * [4/3/2013 2:58:13 PM] : Activation of S:\K3FrontEnd_NET4\Karacell3.application has started. 

ERROR DETAILS 
    Following errors were detected during this operation. 
    * [4/3/2013 2:58:14 PM] System.Deployment.Application.InvalidDeploymentException (ManifestParse) 
     - Exception reading manifest from file:///S:/K3FrontEnd_NET4/Karacell3.application: the manifest may not be valid or the file could not be opened. 
     - Source: System.Deployment 
     - Stack trace: 
      at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation) 
      at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options) 
      at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 
      at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) 
     --- Inner Exception --- 
     System.Deployment.Application.InvalidDeploymentException (SignatureValidation) 
     - Manifest XML signature is not valid. 
     - Source: System.Deployment 
     - Stack trace: 
      at System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) 
      at System.Deployment.Application.ManifestReader.FromDocument(String localPath, ManifestType manifestType, Uri sourceUri) 
     --- Inner Exception --- 
     System.Security.Cryptography.CryptographicException 
     - SignatureDescription could not be created for the signature algorithm supplied. 
     - Source: System.Security 
     - Stack trace: 
      at System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) 
      at System.Security.Cryptography.Xml.SignedXml.CheckSignature(AsymmetricAlgorithm key) 
      at System.Security.Cryptography.Xml.SignedXml.CheckSignatureReturningKey(AsymmetricAlgorithm& signingKey) 
      at System.Deployment.Internal.CodeSigning.SignedCmiManifest.Verify(CmiManifestVerifyFlags verifyFlags) 
      at System.Deployment.Application.Manifest.AssemblyManifest.ValidateSignature(Stream s) 

КОМПОНЕНТ STORE транзакции

Никакой информации транзакции не доступна.

  • Я повторно подписал заявление с действительным ключом
  • я установил на нескольких компьютерах, и он устанавливает и работает отлично.

Пожалуйста, помогите мне перечислить возможную причину этой ошибки.

ответ

0

Я видел подобную проблему раньше, чем конкретная ОС WIndows не могла «понять» или проверить результаты хеша сертификата из-за отсутствия поставщиков криптографических услуг, в моем конкретном случае это было связано с использованием сертификата X509, сгенерированного с использованием v3 для подписания clickonce.

SignatureDescription could not be created for the signature algorithm supplied

Выделенная часть сообщения в сочетании с успешной установкой на несколько машин перед отказом на машине WinXP будет означать, что вы также работаете с аналогичной проблемой - WinXP не знает о шифровании algorithmn указан в сертификат, который вы использовали для подписания клика.

Я не знаю о хорошем решении этого вопроса, обычный совет, который вы найдете в Интернете, - использовать шаблон v2 для генерации X509 вместо шаблона v3, но это не обязательно хорошее решение и помимо возможностей большинства организаций (особенно, поскольку большинство людей используют купленный сертификат, а не сертификаты, созданные из собственного центра сертификации).

0

У вас установлен SP-3 на компьютере с Windows XP и все доступные обновления Windows? Microsoft периодически выталкивает обновления для кода вокруг сертификатов и доверенных издателей и другой связанной информации.

2

У меня была та же проблема, и только у машины не было соответствующей версии .Net.

3

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

+1

Странно, когда я отключаю эту коробку, а затем ударяю F7, чтобы перестроить проект, окно волшебным образом снова станет галочкой. Я не могу «держать» его без внимания! –

+0

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

-1

У меня была такая же проблема для приложения WinForms, которое было создано с помощью Visual Studio 2012 и развернуто на компьютере с критическими обновлениями (SP3 и Windows Installer 4.5). Мне тоже пришлось изменить свое приложение на неподписанное, перейдя на вкладку [Подпись] на странице «Свойства» моего проекта. Я снял флажки между ними: [Подписать клик по одному манифесту] и [Подписать сборку]. То же приложение прекрасно установлено на компьютерах под управлением Windows 7 с включенным подписями.

+3

-1 для повторного ответа – kad81

0

Это потому, что на вашем компьютере разработчика был установлен .NET 4.5, а на клиентских компьютерах был установлен только .NET 4.0. Клиентские компьютеры .NET 4.0 не могут прочитать манифест, поскольку они ожидают SHA-1, в то время как машины разработчика .NET 4.5 могут.

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