شناسایی ProgramFile در درایوهای دیگر
با عرض سلام و ادب حضور اساتید محترم
جستجوی زیادی انجام دادم اما به نتیجه نرسیده ام..
بنده تغییرات نرم افزاری ام را در قالب Patch ارائه میدهم.
مشتریانم به من گفته اند Patch عمل نمیکند یا به عبارتی نرم افزار تغییراتی نکرده است.
مشکل آنها این است که نرم افزار را هر جا دلشون خواسته نصب کردند...
من در Patch گفته ام که تعداد فایل موجود را به ProgramFiles و مقصد اصلی برنامه ام کپی کن اما Programfile در درایوی غیر از ویندوز ممکن است وجود داشته باشد
برای زمانی که در ProgramFile در SystemROot وجود نداشته باشد دستور جستجوی Programfile در درایوهای دیگر را داده ام، و پس از یافتن کپی انجام میشود
اما این جستجو و شناسایی فایلها به کندی انجام میشود .
آیا من این موارد را درست انجام داده ام؟
procedure TForm1.Button1Click(Sender: TObject);
var
Rec: TSearchRec;
begin
if FindFirst('C:\Program Files\test\' + 'test1.exe', faDirectory, Rec) = 0 then
CopyFile('test1.exe','C:\Program Files\test\',false);
end;
end.
نقل قول: شناسایی ProgramFile در درایوهای دیگر
آقا این کار رو نکن من هم قبلا این کار رو میکردم به مشگل میخوری یه کار دیگه کن.
مثلا موقع نصب به برنامت بگو تویه کلید تو ریجستری محلی رو که کاربر برای نصب انتخاب کرده ذخیره کنه و بعدا که خاستی Patch بدی به Patch هات بگو اون کلید رو بخونن و آدرس رو ازش درارن و خودشونو اونجا کپی کنن.
نقل قول: شناسایی ProgramFile در درایوهای دیگر
سلام دوست عزیز
برنامه ام رو از قبل نصب شده دارم
الان فقط باید با یک Patch اینکار انجام بشه
نقل قول: شناسایی ProgramFile در درایوهای دیگر
با سلام.
برای پیدا کردن فولدر های خاصی مثل فولدرهای سیستم بهتر است از روشهای دیگر استفاده کنید. یکی از این راهها پیدا کردن مسیر فولدر از طریق رجیستری است. برای یافتن مسیر پوشه programfiles که مدنظر شما است میتوانید از این تابع استفاده کرده و از رجیستری مسیر را بیابید :
function GetProgramFilesDir: string;
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVer sion', False);
Result := reg.ReadString('ProgramFilesDir');
finally
reg.Free;
end;
end;
خروجی این تابع مسیر مورد نظر خواهد بود :
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := GetProgramFilesDir;
end;
در ضمن اضافه کردن یونیت Registry در لیست uses فرم خود را فراموش نکنید.
موفق باشید...
نقل قول: شناسایی ProgramFile در درایوهای دیگر
برای مقصودی که داری بهتره محل نصب برنامتو تو رجیستری یا یه فایل ini ذخیره کنی. شاخه program files مربوط به windows فقط یکیه و اونم تو درایو نصب ویندوزه، وقتی کسی جایی غیر program files انتخاب میکنه نمیتونی از ویندوز جاشو بپرسی. (اگه از installer برای نصب برنامت استفاده کردی، خودش تو رجیستری یک شاخه به نام برنامت درست کرده و محل نصب رو نگه داشته.)
نقل قول: شناسایی ProgramFile در درایوهای دیگر
سلام
چطوری میتونم پروگرام فایل رو توی دستور کپی بنویسم
CopyFile(c:\test.exe, پروگرم فایل شناسایی شده test.exe, True);
مثلا مقصد که D:\program files شناسایی شده چطوری توی دستور کپی واردش کنم؟
نقل قول: شناسایی ProgramFile در درایوهای دیگر
از
dir1:=dir2+'\*.*';
dir2:='';
dir2:=('َآدرس');
ShellFileOperation(dir1,dir2,FO_copy);
یا
Action:=CopyFile(pchar(dir1),pchar(dir2),true);
استفاده کنید
نقل قول: شناسایی ProgramFile در درایوهای دیگر
ShellFileOperation(dir1,dir2,FO_copy);
با سلام و احترام،، بنده با کد بالا کپی رو انجام میدم اما اگه فایلی از قبل وجود داشته باشه پیغام اینکه آیا میخواهید جایگزین شود ظاهر میشود
بعد از انجام کپی میخوام فایل بدون اینکه سئوالی پرسیده بشه کپی انجام بشه و دیگه سئوالی نپرسه