杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2010|回复: 0

Inno Setup 如何把安装目录自动指向剩余空间最大的磁盘

[复制链接]
发表于 2017-1-9 20:02:38 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. [Setup]
  2. AppName=My Program
  3. AppVerName=My Program version 1.5
  4. DefaultDirName={code:GetMaxDrive}\My Company\My Program
  5. DefaultGroupName=My Program

  6. [Files]
  7. Source: "MyProg.exe"; DestDir: "{app}"
  8. Source: "Readme.txt"; DestDir: "{app}"

  9. [CODE]
  10. var
  11.   maxSpace: Cardinal;
  12. function GetDriveType(lpDisk: String): integer;
  13. external 'GetDriveTypeA@kernel32.dll stdcall';

  14. function GetMaxDrive(Param:string): string;
  15. var j: integer;
  16.     drv: string;
  17.     FreeSpace,TotalSpace: Cardinal;
  18. begin
  19. Result:= '';
  20. maxSpace:= 0;
  21. For j:= 3 to 26 do               //不管三七二十一从 C: 盘一直检查到 Z: 盘
  22. begin
  23. drv:= chr(j+64)+':\';
  24. if GetDriveType(drv)=3 then      //只处理硬盘(Type = 3)
  25.   begin
  26.     GetSpaceOnDisk(drv, True, FreeSpace, TotalSpace);
  27.     if FreeSpace > maxSpace then
  28.       begin
  29.       Result:=chr(j+64)+':';
  30.       maxSpace:= FreeSpace;
  31.       end;
  32.   end;
  33. end;
  34. end;

  35. procedure CurPageChanged(CurPageID: Integer);
  36. begin
  37.   if CurPageID = wpSelectDir then
  38.     begin
  39.       if maxSpace < 1000000000 then     // 检查是否有一定的空间
  40.         WizardForm.NextButton.Enabled:= false;
  41.     end;
  42. end;
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 17:02 , Processed in 0.128445 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表