×
Namespaces

Variants
Actions

如果获得程序的安装路径

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

文章
huwell 在 28 Jun 2007 创建
最后由 hamishwillee 在 15 Dec 2011 编辑

我们的程序做成Sis后可以供使用者自行安装,但是我们并不知道用户到底安装在C盘还是E盘那,有时候我们还真得需要这些信息,譬如我们的程序需要在运行时生成一个dat文件时,那么我们当然希望这个dat文件是放在安装后的程序目录下,这样我们在程序代码中就不能明文写出“C:\system\app\MyApplication\some.dat”这样的文字,因为如果程序安装在E盘,则这个some.dat就会在C盘生成,这可是个坏主意,我们删除该程序时,这个some.dat会保留下来。这样当然不行了,怎么解决那,我们可以通过api来收集到程序安装盘符和路径信息,我们可以这样做:


首先,在程序中设立一个私有类成员变量来存放这个文件的路径:

TFileName iConfigDataFile;


然后,再设立一个私有类成员函数来获得这个文件的路径:

TFileName GetConfigDataFile();


其实现为:

TFileName CMyView::GetConfigDataFile()
{
  //TParse fp;
  //fp.Set(AppUi()->Application()->AppFullName(), NULL, NULL);
  //这句和TParse效果相同但节省了一半空间  
  TParsePtrC fp(AppUi()->Application()->AppFullName());
  _LIT(KFilename, "configure.dat");
  TFileName filename = fp.DriveAndPath();
  filename.Append(KFilename);
  return filename;
}


这样我们只要在程序加一句:

  iConfigDataFile = GetConfigDataFile();


另外,我们可以通过这个函数来得知文件是否已经存在

if (BaflUtils::FileExists(iFs, iConfigDataFile))
{
  User::InfoPrint(_L("File have found"));
}

但请注意添加头文件和库哦:)

  • Location: bautils.h
  • Link against: bafl.lib


此外,还有一个更simple的方法:

#include <aknutils.h> 
 
........
 
TFileName someFile(_L("someFile.Dat"));
CompleteWithAppPath(someFile);
This page was last modified on 15 December 2011, at 13:41.
49 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×