1

我有一个 c# 应用程序,我在 Windows Mobile 6.1 设备上的 cleanboot 期间安装。它安装正确,但是,我需要让它在干净启动后自动启动。

我总是必须在干净启动后对手持设备进行热启动才能启动。

我怎样才能避免这种情况?

4

1 回答 1

2

我假设,您正在使用 CAB 文件在 cleanboot 期间安装您的 C# 应用程序。

在使用 DLL 的 Install_Exit 函数调用安装 cab 文件后,您可以在 cab 中使用 setup.dll 来启动您的应用程序(setupdll 示例,例如:http: //www.codeproject.com/Articles/7724/Creating- Pocket-PC-Application-Setup-Packages-Usin)。但是 MS 声明您不能依赖 cab 安装本身的调用文件。

另一种方法是在您的 C# 应用程序安装后安装第二个 cab,并且只调用您的应用程序,即使使用设置 dll。

另请参阅http://msdn.microsoft.com/en-us/library/bb158796.aspx,了解如何将多个 cab 打包到一个安装中。

cleanboot 安装程序和 AutoStart 的问题是,操作系统已经运行了 \Windows\StartUp 并且在安装 cab 时还运行了其他自动启动。因此,您通常需要重新启动,然后使用 StartUp(或 HKLM\Init)执行您的应用程序。

您还可以使用脚本引擎来安装 cab,然后启动已安装的应用程序。例如使用 MortScript,它支持在 SD Card\2577 或类似目录(卷名\2577)中用作“AutoStart.exe”。该脚本可以调用 wceload.exe 来安装您的应用程序,然后启动已安装应用程序的可执行文件。就像使用批处理一样。

由于这是一个 Intermec 安装,您可以使用 \Flash File Store\UserAutoInstall_sstransferagent.xml 来自动安装和启动应用程序。

例如:您的 cab 位于 \Flash File Store\MyInstall\MyCab.cab 并将 MyApp.exe 安装到 \Program Files\MyApp:

<?xml version="1.0"?>
<Devices>
    <Device Type="" Family="" Model="" Boot="">
        <Files SrcDir="\Flash File Store\UserAutoInstall">
            <File SrcName="" 
               DestName="wceload.exe" 
               DestDir="\Windows" 
               Run="true" 
               CmdLine='"\Flash File Store\MyInstall\MyCab.cab" /silent /verifyconfig /nodelete' 
            />
        <File SrcName="" 
               DestName="MyApp.exe" 
               DestDir="\Program Files\MyApp\MyApp.exe" 
               Run="NoWait" 
               CmdLine='' 
            />
        </Files>
   </Device>
</Devices>

问候

于 2012-12-29T08:53:04.990 回答