PDA

View Full Version : چک کردن آیا برنامه نصب شده یا نه



neda_barnamenevis
سه شنبه 05 تیر 1386, 09:28 صبح
من یک برنامه نوشتم به ای صورت

unction TmainForm.installFonts():Boolean;
var
fontPath : String;
sWinDir: String;
iLength: Integer;
begin
// finding windows fonts directory
installFonts := True;
iLength := 255;
setLength(sWinDir, iLength);
iLength := GetWindowsDirectory(PChar(sWinDir), iLength);
setLength(sWinDir, iLength);
sWinDir := sWinDir+'\Fonts\';
fontPath := GetCurrentDir()+'\fonts\';
if (CopyFile(pChar(fontPath+'F_MARYAM.TTF'),PChar(sWi nDir+'F_MARYAM.TTF'),False)then
installFonts := True
else
installFonts := False;
// ShowMessage('nada');

AddFontResource(PChar(sWinDir+'F_MARYAM.TTF'));
end;





procedure TmainForm.Button1Click(Sender: TObject);
begin
if( not installFonts() ) then
begin
form1.ShowModal;
end;
winexec('aero2007.exe',1);
Application.Terminate;
end;


در هر دوصورت چه فونت نصب شده باشه چه نشده باشه
form1را بهم نشون می ده
لطفا بهم بگین چرا

Saeid59_m
سه شنبه 05 تیر 1386, 12:36 عصر
اولا توابع بدون پارامتر نیازی به پرانتز خالی ندارند (اون توی سی بود)
دوما چرا تابع رو جزو کلاس Form‌ قراردادی البته خیلی از دوستان این کار رو می کنن . نمی دونم چرا ؟!
سوماً خروجی CopyFile‌ فقط می گه که کار به درستی انجام شده یا نه بهتره از تایع FileExist‌ استفاده کنی .

neda_barnamenevis
دوشنبه 11 تیر 1386, 10:17 صبح
من الان این جوری چک می کنم ولی مشکل اینه که باید همه فونت ها نباشه تا فونت را نصب کنه اگر 2 تاش بود 2 تاش نبود نصب نمی کنه چرا؟

function TmainForm.checkFontsInstalled():Boolean;
var sWinDir: String;
iLength: Integer;
begin
// Initialize Variable
iLength := 255;
setLength(sWinDir, iLength);
iLength := GetWindowsDirectory(PChar(sWinDir), iLength);
setLength(sWinDir, iLength);
sWinDir := sWinDir+'\Fonts\';
if( fileExists( sWinDir+'F_MARYAM.TTF') and
fileExists( sWinDir+'F_TAHOMA.TTF') and
fileExists( sWinDir+'F_ZAR.TTF') and
fileExists( sWinDir+'F_TITR.TTF') and
fileExists( sWinDir+'NAZ___SF.TTF') and
fileExists( sWinDir+'NAZB__SF.TTF') ) then
checkFontsInstalled := True
else
checkFontsInstalled := False
end;

Saeid59_m
دوشنبه 11 تیر 1386, 12:29 عصر
به جای


function TmainForm.checkFontsInstalled():Boolean;
var sWinDir: String;
iLength: Integer;
begin
// Initialize Variable
iLength := 255;
setLength(sWinDir, iLength);
iLength := GetWindowsDirectory(PChar(sWinDir), iLength);
setLength(sWinDir, iLength);
sWinDir := sWinDir+'\Fonts\';
if( fileExists( sWinDir+'F_MARYAM.TTF') and
fileExists( sWinDir+'F_TAHOMA.TTF') and
fileExists( sWinDir+'F_ZAR.TTF') and
fileExists( sWinDir+'F_TITR.TTF') and
fileExists( sWinDir+'NAZ___SF.TTF') and
fileExists( sWinDir+'NAZB__SF.TTF') ) then
checkFontsInstalled := True
else
checkFontsInstalled := False
end;

اینو بنویس



function TmainForm.checkFontsInstalled():Boolean;
var sWinDir: String;
iLength: Integer;
begin
// Initialize Variable
iLength := 255;
setLength(sWinDir, iLength);
iLength := GetWindowsDirectory(PChar(sWinDir), iLength);
setLength(sWinDir, iLength);
sWinDir := sWinDir+'\Fonts\';
checkFontsInstalled:=False;

if Not fileExists( sWinDir+'F_MARYAM.TTF') then exit;
if Not fileExists( sWinDir+'F_TAHOMA.TTF') then exit;
if Not fileExists( sWinDir+'F_ZAR.TTF') then exit;
if Not fileExists( sWinDir+'F_TITR.TTF') then exit;
if Not fileExists( sWinDir+'NAZ___SF.TTF') then exit;
if Not fileExists( sWinDir+'NAZB__SF.TTF') Then exit;

checkFontsInstalled:=True;


end;

SYNDROME
دوشنبه 11 تیر 1386, 13:29 عصر
با سلام
به جای Check کردن فونتها می توانید یک فایل خاص با نام خاص را در پوشه ای کپی کنید که آن فایل نشانگر نصب برنامه شما است.
مثلا یک فایل با نامه Test در شاخه فونت یا System32.(البته یک مثال بود)
موفق باشید.