×
Namespaces

Variants
Actions

如何利用第三版Startup List Management API自启动程序

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
文章
翻译:
hoolee
最后由 hamishwillee 在 30 May 2013 编辑

Contents

启动列表管理API

Symbian第三版EXE程序自启动的步骤

1. 在你的项目目录中生成.RSS(如<PRJ_DIRRECTORY>\DATA目录中,其他RSS文件所在之处)如: 06000001.rss

这里用数字作为文件名,这和项目的UID名一致。可以通过它来区分资源,在添加到pkg文件中也是一个很好的参考提示。但名字实际和业务无关。增加下列代码到新的rss文件中:

#include <startupitem.rh>
 
RESOURCE STARTUP_ITEM_INFO startexe
{
executable_name = "c:\\sys\\bin\\StartEXE.exe";
recovery = EStartupItemExPolicyNone;
}

在上述代码中:

  • c: 表示程序将要安装的位置
  • 如果要让用户自己选择安装位置,那就要用!:开头
  • StartEXE.exe是要启动程序的名字,这个是程序自己定义的,但要和MMP文件中的TARGET定义值一致

2. 打开你的.MMP文件

增加下列行,以便编译时包含新资源

START RESOURCE ..\DATA\06000001.rss
END
  • 上述路径和MMP文件位置相关,通常为<PRJ_DIRECTORY>\GROUP,这个路径必须指明新的RSS文件,注意其路径就是第一步所述的

3. 增加下列项到.PKG文件中:

"C:\Symbian\9.1\S60_3rd_MR\Epoc32\data\06000001.rsc"-"c:\private\101f875a\import\[06000001].rsc"
  • 程序能够安装到任何盘符(手机或存储卡)但[uid].rsc必须安装到c:\private\101f875a\import\ .
  • C:\Symbian\9.1\S60_3rd_MR\提供了安装路径(根据你的SDK的EPOCROOT).如果你的程序只在Carbide.c++下运行可以替换为$(EPOCROOT)
  • 这里*.rsc是*.rss编译后获得的. 编译后才会生成,因此扩展名可能根据程序支持的语言不同,不一定包括"SC",如扩展名可能为*.r01.参考Internationalization.
  • 文件必须要拷贝到盘符c:中特定区域, 因此目标路径都为: c:\private\101f875a\import\
  • 拷贝到手机后文件名要进行改变. 即为Package UID(定义在PKG文件头中的)但不要有0x前缀,而且要用中括号包起来([ and ]).

4. 以上工作完毕后就可以开始重新编译了,要确保新的资源也被编译进去,一切就绪后将安装包拷贝到手机,下次重启时你的程序将能自动启动。


注意

  • 如果EXE程序在启动后立刻退出(大约5秒左右),将会显示一条信息,Unable to start <name of EXE>. Application may need to be removed.
  • Developer Library中有几个已知问题的解决方案,搜索“Startup List”即可搜索到
  • Startup List Management API does not work with Self-Signed application.这样的程序需要一个收信的证书(当发布时可以通过Symbian Signed来获取相关证书)
  • 在某些手机上(E61上测试过)startup list manager API只要有WriteUserData能力即可进行执行
  • 要启动的exe不能使用pkg中的内嵌sis文件进行安装

相关链接

  • 更多关于Strtup List Management API可以参考http://www.developer.nokia.com/Community/Discussion/showthread.php?138079-Auto-Startup-Application-Signing!

实例程序

Startup List Management Example

This page was last modified on 30 May 2013, at 07:41.
128 page views in the last 30 days.
×