秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

加上下面的代码后,Lazarus 编译的程序运行时会自动创建菜单及桌面快捷方式,在菜单的快捷方式可直接打开应用(在中标麒麟和树莓派测试使用正常),还解决了每次运行时都会出现下图提示的问题。

 

 

 

 

 

 

复制代码
 1 {$ifdef LINUX}
 2 uses
 3   process,
 4   BaseUnix;
 5 {$endif LINUX} 
 6 
 7 procedure TClientForm.FormCreate(Sender: TObject);
 8 var
 9 vFileName: string;
12   aDirectory,Output: string;
13   iniFile: TIniFile;
14 begin
15 {$IFDEF UNIX}
16   aDirectory := ConcatPaths([GetUserDir, '.local', 'share', 'applications']);
17   if DirectoryExists(aDirectory) then
18     try
19       if DirectoryExists(aDirectory) then
20       begin
21         vFileName := aDirectory + DirectorySeparator + ExtractFileName('回弹检测.desktop');
22         IniFile := TIniFile.Create(vFileName);
23         try
24           iniFile.WriteString('Desktop Entry', 'Encoding', 'UTF-8');
25           iniFile.WriteString('Desktop Entry', 'Name', '回弹检测');
26           iniFile.WriteString('Desktop Entry', 'Comment', '回弹检测计算软件');
27           iniFile.WriteString('Desktop Entry', 'Exec', Format('"%s"', [ParamStr(0)]));
28           iniFile.WriteString('Desktop Entry', 'Type', 'Application');
29           iniFile.WriteString('Desktop Entry', 'GenericName', '回弹检测');
30           iniFile.WriteString('Desktop Entry', 'Category','工程检测;');
31           iniFile.WriteString('Desktop Entry', 'Categories','工程检测;');
32           iniFile.WriteString('Desktop Entry', 'Terminal', 'false');
33           iniFile.WriteString('Desktop Entry', 'Icon', ExtractFilePath(ParamStr(0)) +'回弹检测.png');
34         finally
35           IniFile.Free;
36         end;
37         FpChmod(vFileName, &755);
38         aDirectory:=ConcatPaths([GetUserDir,'.local','share','applications']);
39         RunCommand('update-desktop-database' ,[aDirectory],Output,[poUsePipes, poStderrToOutPut]{$IF DEFINED(FPC_FULLVERSION) AND (FPC_FULLVERSION >= 30200)},swoHide{$ENDIF});
40         //拷贝"回弹检测.desktop"到桌面,并设置为“可执行”
41         aDirectory:=ConcatPaths([GetUserDir,'桌面']);
42         if not DirectoryExists(aDirectory) then
43            aDirectory:=ConcatPaths([GetUserDir,'Desktop']);
44         FileUtil.CopyFile(vFileName,aDirectory+DirectorySeparator+ExtractFileName(vFileName),[]);
45         FpChmod(aDirectory+DirectorySeparator+ExtractFileName(vFileName), &755);//FpChmod需要在uses添加BaseUnix
46       end;
47     except
48     end;
49 {$ENDIF}  
50 end; 
复制代码
posted on   秋·风  阅读(479)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示