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
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;
}