无法在将 XML 发送到 Windows CE 以进行配置时加载 DLL 'aygshell.dll'

Posted

技术标签:

【中文标题】无法在将 XML 发送到 Windows CE 以进行配置时加载 DLL \'aygshell.dll\'【英文标题】:Unable to load DLL 'aygshell.dll' on Sending XML to Windows CE to provision无法在将 XML 发送到 Windows CE 以进行配置时加载 DLL 'aygshell.dll' 【发布时间】:2014-09-04 08:29:40 【问题描述】:

我正在准备 msi 文件以从计算机自动安装我的 windows ce 应用程序,如果已安装,我想卸载该应用程序。 我的代码:

      Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\\microsoft\\windows\\currentversion\\app paths\\ceappmgr.exe");string appPath = key.GetValue(null).ToString();
            ProcessStartInfo info = new ProcessStartInfo();
            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();


            doc.LoadXml("<wap-provisioningdoc>" +
        "<characteristic type=\"UnInstall\">" +
                  "<characteristic type=\"AppName\">" +
                    "<parm name=\"uninstall\" value=\"1\"/>" +
                  "</characteristic>" +
                "</characteristic>" +
            "</wap-provisioningdoc>");

Microsoft.WindowsMobile.Configuration.ConfigurationManager.ProcessConfiguration(doc, false);

            info.Arguments = "Arguments here";
            info.FileName = appPath;

            process.StartInfo = info;
            process.Start();

我收到“无法加载 DLL 'aygshell.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”异常 这是堆栈跟踪:

Microsoft.WindowsMo​​bile.Configuration.ConfigurationManager.MainConfigurator(XmlDocument configDoc, UInt32 flags) 在 Microsoft.WindowsMo​​bile.Configuration.ConfigurationManager 的 Microsoft.WindowsMo​​bile.Configuration.ConfigurationManager.SafeNativeMethods.DMProcessConfigXml(String wapDocument, UInt32 flags, IntPtr& documentPointer)。 ProcessConfiguration(XmlDocument configDoc, Boolean metadata) at setupconsoleapp1.Class1.installfile() in FileLocation\setupconsoleapp1\setupconsoleapp1\Class1.cs:line 251 at setupconsoleapp1.Program.Main(String[] args) in FileLocation\Program.cs:line 13在 System.AppDomain._nExecuteAssembly(Assembly 程序集,String[] args) 在 System.AppDomain.nExecuteAssembly(Assembly 程序集,String[] args) 在 System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel) 在 System.Runtime.Hosting .ManifestRunner.ExecuteAsAssembly() 在 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData) 在 Syst em.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext) 在 System.Activator.CreateInstance(ActivationContext activationContext) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在 System。 Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()

【问题讨论】:

Error: Unable to load DLL '.dll' : The specified module could not be found. (Exception from HRESULT: 0x8007007E) - What is this error? 的可能重复项 @Shakehar,可能是重复的,但链接的问题没有可接受的答案。 @Olter 我知道它没有,但无法加载 dll 是一个非常普遍的错误,投票最多的答案确实列出了问题的主要原因。调查这些可能会解决此问题。 @Shakehar 是的,无法加载 dll 是通用的,我已经针对此问题进行了调查,但找不到解决方案。如果有人可以建议我“如何使用上述方法从 Windows 6.5 手持设备卸载我的应用程序”,将不胜感激。 【参考方案1】:

您谈到了 Windows Mobile 和 Windows CE。这些是同一核心操作系统的不同版本,虽然 aygshell 是您可以在任何 Windows Mobile 设备中使用的组件,但它可能不是 Windows CE 操作系统映像的一部分。 Windows CE 的可配置性更高,一些 OEM 可能会删除不需要的组件。 Aygshell 不包含在操作系统的较便宜的核心许可证中(至少高达 CE 6.0),因此 OEM 可能会决定将其删除以降低设备价格。

【讨论】:

感谢 Valter,我更新了我的问题。实际上我正在研究 CE 6.5,我可以在 Windows 文件夹中找到 aygshell.dll。因为我期待从 MSI 卸载 Windows CE6.5 上的应用程序的解决方案,所以我没有将您的答案标记为已接受答案。 没问题,只是检查您提供的信息是否正确:)

以上是关于无法在将 XML 发送到 Windows CE 以进行配置时加载 DLL 'aygshell.dll'的主要内容,如果未能解决你的问题,请参考以下文章

Windows CE无法连接Win 10

如何从 C# 动态运行 SQL Server CE [Windows mobile] 中的 SQL 脚本文件?

Windows 2004 更新后无法以其他用户身份运行 EXCEL.EXE

Mailchimp 活动发送错误 - 此活动已发送,无法再次发送

如何在将音频缓冲区发送到扬声器之前获取它们?

在将发送到电子邮件的 html 中添加 css