View Full Version : How to install the directory automatically points to the Max Drive?
52098994
04-10-2016, 09:21
How to install the directory automatically points to the Max Drive?
I write this error
http://hoop8.com/1610A/iymywcOA.png
http://hoop8.com/1610A/BF0b4Knm.png
Razor12911
04-10-2016, 13:13
These go here
http://fileforums.com/showthread.php?t=98274
how to copy folder to Documents auto*?
konami etc. save game ...
how to copy folder to Documents auto*?
konami etc. save game ...
Please make your request in the appropriate section.
Razor12911
07-10-2016, 02:27
Not a thank you in 48 h, if it do not agree, it must be said, if it is just the size and not free space, I don't know, but I know not against, it's that this is the last time that I help...
Haha, same thing I'm dealing with, you sometimes wonder if the thanks button is hidden from other users, at least to show appreciation.
I was approached by this guys who asked this question because he failed to solve a simple code, the code was pretty simple so after telling him what to do, he sent an attachment and asked for help with the code, I ignored it, he then sent PM, on the case, same day, I then had to leave my assignment and help him, helped him, he then asks another question, no thanks received in the process.
http://fileforums.com/showthread.php?t=98306
http://fileforums.com/showthread.php?t=98345 , this question is ignored on purpose.
Just do this, they ignore thanks button, ignore question.
52098994
09-10-2016, 10:50
Not a thank you in 48 h, if it do not agree, it must be said, if it is just the size and not free space, I don't know, but I know not against, it's that this is the last time that I help...
be a long time See your reply,I am very sorry:)
my English is poor.
Automatic installation path to the Maximum free space drive
Check all Maximum free space drive (except Flash-USB, CD Drive,USB disk....only checks for hard disk)
IF
C free space:50G
D free space:100G
E free space:200G
F free space:180G
Default installation path to E drive(Maximum free space drive)
think you:)
52098994
09-10-2016, 11:07
These go here
http://fileforums.com/showthread.php?t=98274
be a long time See your reply,I am very sorry
my English is poor.
Is to ask questions in this post?
Certainly the improved:
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
type
TDiskInfo = record
DriveRoot: string;
FreeSpace: cardinal;
TotalSpace: cardinal;
end;
TDiskInfos = array of TDiskInfo;
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';
Function GetMaxFreeSpace(Value: String): String;
var
S: String;
I, J: Integer;
DiskInfos: TDiskInfos;
begin
I := 0; J:=0;
if GetLogicalDriveStrings(0, #0) > 0 then
begin
SetLength(S, GetLogicalDriveStrings(0, #0));
if GetLogicalDriveStrings(Length(S), S) > 0 then
begin
S := TrimRight(S) + #0;
while Pos(#0, S) > 0 do
begin
if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
begin
Inc(I);
SetLength(DiskInfos, I);
DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
end;
Delete(S, 1, Pos(#0, S));
end;
for I := 0 to Length(DiskInfos) -1 do
begin
if I = 0 then
J := DiskInfos[i].FreeSpace else
begin
if J > DiskInfos[i].FreeSpace then J := J else
begin
J := DiskInfos[i].FreeSpace;
Result:=DiskInfos[i].DriveRoot;
end;
end;
end;
end;
end;
end;
52098994
10-10-2016, 05:53
Certainly the improved:
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
type
TDiskInfo = record
DriveRoot: string;
FreeSpace: cardinal;
TotalSpace: cardinal;
end;
TDiskInfos = array of TDiskInfo;
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';
Function GetMaxFreeSpace(Value: String): String;
var
S: String;
I, J: Integer;
DiskInfos: TDiskInfos;
begin
I := 0; J:=0;
if GetLogicalDriveStrings(0, #0) > 0 then
begin
SetLength(S, GetLogicalDriveStrings(0, #0));
if GetLogicalDriveStrings(Length(S), S) > 0 then
begin
S := TrimRight(S) + #0;
while Pos(#0, S) > 0 do
begin
if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
begin
Inc(I);
SetLength(DiskInfos, I);
DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
end;
Delete(S, 1, Pos(#0, S));
end;
for I := 0 to Length(DiskInfos) -1 do
begin
if I = 0 then
J := DiskInfos[i].FreeSpace else
begin
if J > DiskInfos[i].FreeSpace then J := J else
begin
J := DiskInfos[i].FreeSpace;
Result:=DiskInfos[i].DriveRoot;
end;
end;
end;
end;
end;
end;
Perfect!!! Thank you
52098994
13-10-2016, 12:55
Certainly the improved:
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
type
TDiskInfo = record
DriveRoot: string;
FreeSpace: cardinal;
TotalSpace: cardinal;
end;
TDiskInfos = array of TDiskInfo;
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';
Function GetMaxFreeSpace(Value: String): String;
var
S: String;
I, J: Integer;
DiskInfos: TDiskInfos;
begin
I := 0; J:=0;
if GetLogicalDriveStrings(0, #0) > 0 then
begin
SetLength(S, GetLogicalDriveStrings(0, #0));
if GetLogicalDriveStrings(Length(S), S) > 0 then
begin
S := TrimRight(S) + #0;
while Pos(#0, S) > 0 do
begin
if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
begin
Inc(I);
SetLength(DiskInfos, I);
DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
end;
Delete(S, 1, Pos(#0, S));
end;
for I := 0 to Length(DiskInfos) -1 do
begin
if I = 0 then
J := DiskInfos[i].FreeSpace else
begin
if J > DiskInfos[i].FreeSpace then J := J else
begin
J := DiskInfos[i].FreeSpace;
Result:=DiskInfos[i].DriveRoot;
end;
end;
end;
end;
end;
end;
http://hoop8.com/1610B/FZg54zNP.jpg
What is this error?
why?
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetMaxFreeSpaceDrive: String;
var
i: Integer;
sDriveRoot: string;
iLastMax, iNewMax, iTotal: Cardinal;
begin
iLastMax:=0;
for i := 1 to 26 do
begin
sDriveRoot := Chr(i+64)+':';
if GetDriveType(sDriveRoot) = 3 then
begin
GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
if iLastMax < iNewMax then
begin
iLastMax := iNewMax;
Result:=sDriveRoot;
end;
end;
end;
end;
Chayan Manna
03-07-2017, 19:56
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetMaxFreeSpaceDrive: String;
var
i: Integer;
sDriveRoot: string;
iLastMax, iNewMax, iTotal: Cardinal;
begin
iLastMax:=0;
for i := 1 to 26 do
begin
sDriveRoot := Chr(i+64)+':';
if GetDriveType(sDriveRoot) = 3 then
begin
GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
if iLastMax < iNewMax then
begin
iLastMax := iNewMax;
Result:=sDriveRoot;
end;
end;
end;
end;
Perfect code !!!!!
Thanks !!!!!
Please can you add a function
That's here:
If the max drive is c then the path will be C:/Programfiles/{#Appname}
Otherwise it will be something else like E:/{#Appname}
Thanks :)
Simply call the function with your constant at the end:
GetMaxFreeSpaceDrive + '\' + ExpandConstant('{#Appname}');
Chayan Manna
04-07-2017, 12:07
Simply call the function with your constant at the end:
GetMaxFreeSpaceDrive + '\' + ExpandConstant('{#Appname}');
Please give an Example. :)
#define MyAppName "MyApp"
#define MyAppVersion "1.0"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={code:GetMaxFreeSpace}\{#MyAppName}
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
[ Code]
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetMaxFreeSpace(S: String): String;
var
i: Integer;
sDriveRoot: string;
iLastMax, iNewMax, iTotal: Cardinal;
begin
iLastMax:=0;
for i := 1 to 26 do
begin
sDriveRoot := Chr(i+64)+':';
if GetDriveType(sDriveRoot) = 3 then
begin
GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
if iLastMax < iNewMax then
begin
iLastMax := iNewMax;
Result:=sDriveRoot;
end;
end;
end;
end;
Chayan Manna
04-07-2017, 20:08
#define MyAppName "MyApp"
#define MyAppVersion "1.0"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={code:GetMaxFreeSpace}\{#MyAppName}
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
[ Code]
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif
function GetDriveType(lpRootPathName: string): UINT;
external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetMaxFreeSpace(S: String): String;
var
i: Integer;
sDriveRoot: string;
iLastMax, iNewMax, iTotal: Cardinal;
begin
iLastMax:=0;
for i := 1 to 26 do
begin
sDriveRoot := Chr(i+64)+':';
if GetDriveType(sDriveRoot) = 3 then
begin
GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
if iLastMax < iNewMax then
begin
iLastMax := iNewMax;
Result:=sDriveRoot;
end;
end;
end;
end;
Thanks.
Will try it. :)
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.