c# - 从 C# 代码安装/执行 CAb 文件[Windows Mobile 应用程序文件]?

标签 c# winapi windows-mobile

我正在开发适用于 Framework 6 的 Windows Mobile 应用程序。我想添加功能来升级设备上当前运行的应用程序的补丁。

当 Windows Mobile 应用程序工作时,它应该异步检查服务器数据库中是否有任何可用的新版本。如果补丁存在,程序应下载 .cab(Windows Mobile 安装程序)文件并自动安装/运行。

主要是我对这些有疑问:

  1. 如何将 cab 文件下载到设备的特定文件夹。
  2. 如何以编程方式安装 cab 文件。 (以编程方式触发 cab 文件安装,无需用户干预)

如何做到这一点?

请帮我解决这个问题......

最佳答案

将文件下载到本地文件夹通常取决于您的存储库,即。如果您将其存储在文件共享或基于网络的文件共享中,您将需要稍微不同的代码。 您必须考虑通过某种 list 文件或数据库记录提供预下载版本检查的选项,以避免仅仅为了检查其版本而下载整个补丁。

一旦您对下载部分进行排序(同样,取决于存储),您可以通过调用 wceload.exe 从您的应用程序调用 CAB 安装:

            Process proc = Process.Start("wceload.exe", "\"" + Path.Combine(applicationPath, updateFileName) + "\"");
            proc.WaitForExit();

但是,这将需要用户进行交互并按“确定”以在旧版本之上安装新版本。

[编辑] 一些设备制造商(例如 Intermec)提供了在重新启动时自动安装 CAB 的方法,但这是特定于设备的,因此您必须仔细阅读。

关于c# - 从 C# 代码安装/执行 CAb 文件[Windows Mobile 应用程序文件]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603564/

相关文章:

visual-studio-2008 - VS2008远程连接Win Mobile 6.1设备

javascript - Razor - 使用 JavaScript 在饼图中显示字典数据

c - 我无法更改文本的字体

c# - Windows Mobile 6.5.3 和以前的版本在运行时如何区分?

c++ - 调整大小后win32重绘

winapi - 创建后更改窗口的类?

c# - SQLite Interop DLL 缺少方法 - Windows Mobile CF

c# - 如何以编程方式在 Windows 10 资源管理器的导航 Pane 中创建指向文件夹的链接

c# - 如何规定方法的参数必须是stringS或string

c# - .Net 的 Linq/IEnumerable 中 CAR 和 CDR 的扩展方法等价物