Приложение не будет работать на Windows XP
Я создал приложение vb.net с использованием Visual Studio 2013, опубликовал его и установил на свой рабочий компьютер (Windows 7) и ноутбук (также Windows 7), и они оба работают нормально. Я попытался установить его на ПК, это приложение, на котором идет Windows XP, я получил ошибку со следующими деталями:
PLATFORM VERSION INFO
Windows : 5.1.2600.196608 (Win32NT)
Common Language Runtime : 4.0.30319.1022
System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100)
clr.dll : 4.0.30319.1022 (RTMGDR.030319-1000)
dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100)
dfshim.dll : 4.0.31106.0 (Main.031106-0000)
SOURCES
Deployment url : file:///D:/Visitors.application
ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of D:\Visitors.application resulted in exception. Following failure messages were detected:
+ Exception reading manifest from file:///D:/Visitors.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
* [14/08/2014 13:43:54] : Activation of D:\Visitors.application has started.
ERROR DETAILS
Following errors were detected during this operation.
* [14/08/2014 13:44:00] System.Deployment.Application.InvalidDeploymentException (ManifestParse)
- Exception reading manifest from file:///D:/Visitors.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)
COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.
Это первый раз, когда я опубликовал приложение, поэтому я не знаю, почему это происходит, я могу только предположить, что оно как-то связано с Windows XP. Буду признателен за любую помощь с этой проблемой.
Обновить:
Платформа.NET ориентирована на 4.0, а целевым процессором был "Любой процессор", и я изменил его на x86. Данный xp-компьютер имеет.NET4.0, XP SP3 и является 32-разрядным, но это все еще не решило мою проблему. Кроме того, я использую SQL Server 2008r2 Express в этом приложении, если это имеет какое-либо значение. Старая ошибка не появляется, а новая говорит: "SqlExpress2008R2 не является допустимым приложением Win32".
Обновление 2:
Помимо необходимости делать то, что я сказал в своем первом обновлении, мне также пришлось изменить подпись с "Подписать манифесты ClickOnce" на "Подписать сборку", и мое приложение теперь работает на Windows XP.
2 ответа
Платформа.NET ориентирована на 4.0, а целевым процессором был "Любой процессор", и я изменил его на x86. Данный xp-компьютер имеет.NET4.0, XP SP3 и является 32-разрядным. Мне также пришлось изменить подпись с "Подписать манифесты ClickOnce" на "Подписать сборку", и теперь мое приложение работает на Windows XP.
Вы не можете запустить или собрать vb.net 2012/2013 или новее в Windows XP.
Решение - используйте vb.net 2010 в Windows XP, запустите и создайте там свой код.
Если на любой вопрос приятно ответить.