30-10-2009, 09:59 AM
السلام عليكم و رحمة الله
هذه هي الأوامر التي تحتوي على الخطأ العمدي :
هذه طريقة الاستدعاء :
لملاحظة الخطأ يتطلب فقط بعض التركيز البسيط :brow:
اضافة Parameter ليتم التفاعل معه عند تشغيل التطبيق
اوامر الفحص عن التشغيل، في حالة التقاط Parameter يتم قراءته و ان تطابق مع الشرط التطبيق يقوم بعمل اللازم...
هذه الأوامر تخص التقاط براميتر واحد فقط و تتجاهل البرامترات الأخرى، في حالة ارادة معالجة كل البرامترات الممررة على التطبيق نقوم بعمل حلقة تلتقط كل ما يمرر للتطبيق ليتم معالجته..
يمكن ايضا استعمال ملف خارجي يحتوي على التعليمات التي يجب عملها للالغاء التنصيب بنجاح و دون اخطاء، هذه التعليمات تكون منظمة تحت اقسام واضحة او مشفرة...

---
هيا... هل من حلول... الأمور اصبحت اكثر وضوحا
إقتباس :لم اجده !
هذه هي الأوامر التي تحتوي على الخطأ العمدي :
PHP كود :
function TMain.WriteReg(KeyRoot: HKEY; Key, Value, NewValue: string): Boolean;
var
Reg: TRegistry;
begin
Result := False;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(Key, True) then
begin
if not (Reg.ReadString(Value) = NewValue) then
begin
Reg.WriteString(Value, NewValue);
Result := True;
end;
end
else
begin
Result := False;
end;
Reg.CloseKey;
Reg.Free;
end;
function TMain.ReadReg(KeyRoot: HKEY; Key, Value: string): string;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(Key, False) then
if Reg.ValueExists(Value) then
begin
Result := Reg.ReadString(Value);
end
else
begin
Result := 'Error: ' + Value + ' not found';
end;
Reg.CloseKey;
Reg.Free;
end;
هذه طريقة الاستدعاء :
PHP كود :
ReportMmo.Lines.Add(ReadReg(HKEY_LOCAL_MACHINE, '\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon', 'Shell'));
WriteReg(HKEY_LOCAL_MACHINE, '\SOFTWARE\D4A', 'File Name', Application.ExeName);
لملاحظة الخطأ يتطلب فقط بعض التركيز البسيط :brow:
إقتباس :السبب فى ذلك ان بعد حذف البرنامج لاول مرة, لا يتم حذف القيم الموجودة فى السجل الخاصة بالاصدار و اسم الشركة, الخ..الفكرة التي وضعتها اخي Goblin هي المعمول بها مع بعض الاضافات الخفيفة :
كود :
Reg.WriteString('UninstallString', Application.ExeName + ' [COLOR=red]Uninstall[/COLOR]');كود :
if ParamStr([COLOR=red]1[/COLOR]) = '[COLOR=red]Uninstall[/COLOR]' then
begin
Action 01 = Stop and delete installed files... (Location 'Current folder' and 'System folder' and...)
Action 02 = Delete all Registry values...
Action 04 = ....
Action 05 = ....
Action 06 = ....
Action 07 = Make and run 'Suicide.bat' to delete last file and empty folder or
tell system to delete on reboot last file.
end;هذه الأوامر تخص التقاط براميتر واحد فقط و تتجاهل البرامترات الأخرى، في حالة ارادة معالجة كل البرامترات الممررة على التطبيق نقوم بعمل حلقة تلتقط كل ما يمرر للتطبيق ليتم معالجته..
كود :
var
x: integer;
begin
for x := 1 to [COLOR=red]ParamCount[/COLOR] do
begin
if paramStr([COLOR=red]x[/COLOR]) = 'Uninstall' then
begin
end;
end;يمكن ايضا استعمال ملف خارجي يحتوي على التعليمات التي يجب عملها للالغاء التنصيب بنجاح و دون اخطاء، هذه التعليمات تكون منظمة تحت اقسام واضحة او مشفرة...
إقتباس :عذرا اذا كانت الطريقة دون المستوي.لا يا اخي Goblin حلك جيد

---
هيا... هل من حلول... الأمور اصبحت اكثر وضوحا

