今天我开始每次用户尝试安装应用程序时都会收到错误,我不知道为什么我在部署0个月的问题后得到这个,我没有改变任何与项目属性相关的内容,所有修改都与代码相关
这是错误日志
平台版本信息 Windows:10.0.15063.0(Win32NT) 公共语言运行时:4.0.30319.42000 System.Deployment.dll:4.7.2046.0构建者:NET47REL1 clr.dll:4.7.2101.1由NET47REL1LAST构建 dfdll.dll:4.7.2046.0由:NET47REL1构建 dfshim.dll:10.0.15063.0(WinBuild.160101.0800)
SOURCES 部署网址:file:/// Y:/RE/RentaEquipos.application 部署提供程序URL:file://svrre/Repository/RE/RentaEquipos.application 应用程序网址:file://svrre/Repository/RE/Application%20Files/RentaEquipos_2017_07_10_8/RentaEquipos.exe.manifest
恒等式 部署标识:RentaEquipos.application,Version = 2017.7.10.8,Culture = es-CR,PublicKeyToken = 0000000000000000,processorArchitecture = x86
申请摘要 *可安装的应用程序。
错误摘要 下面是错误的摘要,这些错误的详细信息将在后面的日志中列出。 *激活Y:\ RE \ RentaEquipos.application导致异常。检测到以下失败消息: +指定的演员表无效。
组件商店交易失败摘要 未检测到任何交易错误。
警告 *此应用程序的清单没有签名。签名验证将被忽略。 *此应用程序的清单没有签名。签名验证将被忽略。 *此应用程序的清单没有签名。签名验证将被忽略。
操作进度状态 * [26/7/2017 11:23:16]:Y:\ RE \ RentaEquipos.application的激活已经开始。 * [26/7/2017 11:23:16]:部署清单的处理已成功完成。 * [26/7/2017 11:23:16]:已开始安装应用程序。
错误细节 在此操作期间检测到以下错误。 * [26/7/2017 11:23:16] System.InvalidCastException - 指定的演员表无效。 - 来源:System.Deployment - 堆栈跟踪: 在System.Deployment.Application.DownloadManager.VerifyRequestedPrivilegesSupport(String requestedExecutionLevel) 在System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest,String targetDir,Uri deploymentUri,> IDownloadNotification notification,DownloadOptions options,Uri& appSourceUri,String& appManifestPath) 在System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState,ActivationDescription actDesc,Int64 transactionId,> TempDirectory& downloadTemp) 在System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState,ActivationDescription actDesc) 在System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri,Boolean isShortcut,String textualSubId,String> deploymentProviderUrlFromExtension,BrowserSettings browserSettings,String& errorPageUrl,Uri& deploymentUri) 在System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri,Boolean isShortcut,String textualSubId,String> deploymentProviderUrlFromExtension,BrowserSettings browserSettings,String& errorPageUrl) ---从抛出异常的先前位置开始的堆栈跟踪结束--- 在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri,Boolean isShortcut,String textualSubId,String> deploymentProviderUrlFromExtension,BrowserSettings browserSettings,String& errorPageUrl) 在System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(对象状态)
组件商店交易细节 没有可用的交易信息。
答案 0 :(得分:5)
DownloadManager.VerifyRequestedPrivilegesSupport
方法正在抛出InvalidCastException
。不幸的是,ReferenceSource上没有该类的代码,但System.Deployment.dll
为decompiled时,罪魁祸首很明显。反编译的方法如下所示:
private static void VerifyRequestedPrivilegesSupport(string requestedExecutionLevel)
{
Logger.AddMethodCall("VerifyRequestedPrivilegesSupport(" + requestedExecutionLevel + ") called.");
if (!PlatformSpecific.OnVistaOrAbove)
return;
bool flag = false;
RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
if (registryKey != null && registryKey.GetValue("EnableLUA") != null)
{
Logger.AddInternalState("LUA policy key = " + registryKey.Name);
if ((int) registryKey.GetValue("EnableLUA") != 0)
{
flag = true;
Logger.AddInternalState("LUA is enabled.");
}
}
if (flag && (string.Compare(requestedExecutionLevel, "requireAdministrator", StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(requestedExecutionLevel, "highestAvailable", StringComparison.OrdinalIgnoreCase) == 0))
throw new InvalidDeploymentException(ExceptionTypes.UnsupportedElevetaionRequest, string.Format((IFormatProvider) CultureInfo.CurrentUICulture, Resources.GetString("Ex_ManifestExecutionLevelNotSupported"), new object[0]));
}
抛出异常的行将是这一行:
if ((int) registryKey.GetValue("EnableLUA") != 0)
代码从Windows注册表中读取注册表项\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
。为了抛出该异常,密钥必须存在且必须具有EnableLUA
值,但该值必须键入为整数以外的值。您需要在收到错误的计算机上运行RegEdit.exe
,导航到注册表中的该键,然后检查该值以查看它是什么。它应该在REG_DWORD
列中显示该值的Type
。如果没有,请将其删除并使用正确的类型重新添加。