procedure TFormClientAgent.ActAppCreateLinkExecute(Sender: TObject);
var
vFileName: string;
iniFile: TIniFile;
begin
try
vFileName := GetDeskTopDir + '/AR.desktop';
IniFile := TIniFile.Create(vFileName);
try
iniFile.WriteString('Desktop Entry', 'Encoding', 'UTF-8');
iniFile.WriteString('Desktop Entry', 'Name', 'AR For Linux');
iniFile.WriteString('Desktop Entry', 'Comment', 'AR For Linux');
iniFile.WriteString('Desktop Entry', 'Exec', Format('"%s"', [ParamStr(0)]));
iniFile.WriteString('Desktop Entry', 'Type', 'Application');
iniFile.WriteString('Desktop Entry', 'GenericName', 'AR For Linux');
iniFile.WriteString('Desktop Entry', 'Terminal', 'false');
iniFile.WriteString('Desktop Entry', 'Icon', ExtractFilePath(ParamStr(0)) + '/ar.png');
finally
IniFile.Free;
end;
ModifyFileAttribute(GetDeskTopDir + '/AR.desktop');
except
end;
end;
生成的檔案位置為桌面, 名稱為: AR.desktop, 内容為:
[Desktop Entry]
Encoding=UTF-8
Name=AR For Linux
Comment=AR For Linux
Exec="/mnt/hgfs/FPC/Bin/AR For Linux"
Type=Application
GenericName=AR For Linux
Terminal=false
Icon=/mnt/hgfs/FPC/Bin//ar.png
ModifyFileAttribute(GetDeskTopDir + '/AR.desktop');
這句話是更改檔案的屬性, 具體代碼如下: (C寫的SO檔案, Lazarus調用)
#include <sys/stat.h>
extern int ModifyFileAttribute(char *aFile)
{
char mode[] = "0777";
// char buf[100] = "/home/anonym/Desktop/AR.desktop";
int i;
i = strtol(mode, 0, 8);
if (chmod (aFile,i) < 0)
{
return -1;
}
return 0;
}