windows mobile 6.5 CAB签名和wceload / silent问题

时间:2011-03-06 20:20:03

标签: .net security windows-mobile compact-framework cab

我生成了个人证书文件* .cer,用它签署了我的CAB文件,在Windows Mobile 6.5上安装了此证书。我想在设备上静默安装此CAB。我打电话 “wceload.exe / silent MyCab.CAB”。问题是/ silent开关不工作 - 我得到安装CAB的提示,而我期待/ silent开关将自动提示所有提示。另外,如果我之前已经安装了CAB,我想避免使用“已安装...的先前版本......”对话框。有没有办法在Windows Mobile上执行此操作?我尝试将注册表项HKLM / Software / Apps / My App / Instl设置为0,但它无法正常工作。 任何帮助表示赞赏。

此致

2 个答案:

答案 0 :(得分:1)

您是否在安装证书之后以及运行wceload之前尝试过热启动?

您可以尝试使用/noui参数将/silent添加到命令行,尽管这应该是针对旧版应用程序的。 http://msdn.microsoft.com/en-us/library/bb158700.aspx

但是,您可能需要可信证书。您可以通过将[HKLM]\Security\Policies\Policies从[DWORD] 0更改为[DWORD] 1来禁用此要求。

另见:

答案 1 :(得分:1)

我的CAB没有签名,但以下方法适用于我在WM 6.5上完全安静地安装(没有任何用户界面 - 我在安装过程中显示一个忙碌的光标)。在现有安装的顶部以编程方式(使用Process类c#)执行安装。

wceload /nodelete /silent "\Storage Card\Blah\Blah.CAB"

我有点惊讶,因为这里的文档:[http://msdn.microsoft.com/en-us/library/bb158700.aspx]说:

  

如果.cab文件未签名,并且在调用wceload时指定了/ silent或/ noui选项,则wceload可能会忽略这些选项。

我想应该说'可能会或可能不会忽略这些选项';)

下面的完整C#代码:

Cursor.Current = Cursors.WaitCursor;

try
{
    using (Process proc = new Process())
    {
        proc.StartInfo = new ProcessStartInfo("wceload", string.Format("/nodelete /silent \"{0}\"", cabFile));

        if (proc.Start())
        {
            proc.WaitForExit();
        }
    }
}
finally
{
    Cursor.Current = Cursors.Default;
}