سؤال

اعتدت أن أكون قادرة على إطلاق محليا تثبيت التطبيق المساعد من خلال تسجيل معين mime-type في سجل ويندوز.هذا مكنني تسمح للمستخدمين لتكون قادرة على انقر مرة واحدة على رابط التثبيت الحالي من المتصفح الداخلي التطبيق.هذا يعمل بشكل جيد في Internet Explorer 5 (أكثر من مرة) و فايرفوكس لكن الآن لا يعمل في Internet Explorer 7.

اسم الملف مرت على بلدي شل/فتح/الأمر ليس البدني الكامل طريق تحميل حزمة التثبيت.معلمة المسار أنا سلمت من قبل أي هو

"C:\Document and Settings\chq-tomc\Local Settings\Temporary Internet Files\
  EIPortal_DEV_2_0_5_4[1].expd"

هذا للأسف لا حل المادية الملف عند الاتصال FileExists() أو عند محاولة إنشاء TFileStream الكائن.

المسار الفعلي مفقود Internet Explorer خفية التخزين المؤقت الدليل الفرعي على ملفات الإنترنت المؤقتة من "Content.IE5\ALBKHO3Q" الذين المسار المطلق يكون كما أعرب عن

"C:\Document and Settings\chq-tomc\Local Settings\Temporary Internet Files\ 
  Content.IE5\ALBKHO3Q\EIPortal_DEV_2_0_5_4[1].expd"

نعم الدلائل الفرعية يتم إنشاؤها عشوائيا من قبل IE و هذا لا ينبغي أن يكون مصدر قلق طالما أن أي يمر المسار الكامل إلى مساعدي التطبيق الذي للأسف لا تفعل.

تركيب mime مساعد التطبيق ليس مصدر قلق.هو تثبيت/تحديث عالمي النصي لتسجيل الدخول لكل 10,000+ المستخدمين في جميع أنحاء العالم.Mime المساعد هو فقط الاحتجاج عندما ينقر المستخدم على صفحة الويب الداخلية مع رابط التثبيت من متصفح سطح المكتب التطبيق.هذا التركيب هو العودة مع mime نوع من "application/x-expeditors".تسجيل ".expd" / "application/x-expeditors" mime-type يبدو مثل هذا.

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.expd] 
@="ExpeditorsInstaller"
"Content Type"="application/x-expeditors"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller]
"EditFlags"=hex:00,00,01,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller\shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller\shell\open]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ExpeditorsInstaller\shell\open\command]
@="\"C:\\projects\\desktop2\\WebInstaller\\WebInstaller.exe\" \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Content Type\application/x-expeditors]
"Extension"=".expd"

كان يعتبر تعداد كل من المستخدم أي إدخالات ذاكرة التخزين المؤقت ولكن أود أن يكون المعنية مع كم من الوقت قد يستغرق فحص كل منهم أو أن كنت قد ينتهي في العثور على كبار السن إدخال ذاكرة التخزين مؤقت قبل الدخول الحالي أنا أبحث عن.لكن بين قوسين اسم الملف لاحقة "[n]" قد يكون مفتاح فريد.

لقد حاولت wininet طريقة GetUrlCacheEntryInfo ولكن هذا يتطلب URL ليس المسار الظاهري سلمت من قبل أي.

أملي هو أن هناك قذيفة وظيفة إعطاء المسار الظاهري ومن ثم إعادة المسار الفعلي.

هل كانت مفيدة؟

المحلول 5

بعض المتابعة ليغلق على هذا السؤال.

تحولت القضية الحقيقية كان كيف كان خلق التعامل مع ملف باستخدام TFileStream.لقد غيرت مفتوحة مع fmOpenRead أو fmShareDenyWrite التي تحل ما تحولت إلى أن تكون قفل ملف القضية.

srcFile := TFileStream.Create(physicalFilename, fmOpenRead or fmShareDenyWrite);

نصائح أخرى

أعتقد أن الدلائل الفرعية التي تم إنشاؤها بواسطة أي يتم بشكل عشوائي, حتى أنك لن تكون قادرة على ضمان أنه سيتم تسمية نفسه في كل مرة, و المشكلة أرى مع التسجيل الأسلوب هو أنه يعمل فقط عندما يكون الملف لا يزال في ذاكرة التخزين المؤقت...إفراغ ذاكرة التخزين المؤقت من شأنه تطهير الملفات التي تتطلب بعد تثبيت آخر.

لن يكون من الأفضل لتثبيت هذا المساعد في تطبيق البيانات ؟

أنا لست متأكد من هذا ولكن ربما هذا قد تقودك في الاتجاه الصحيح:حاول استخدام عنوان URL ذاكرة التخزين المؤقت وظائف wininet DLL: FindFirstUrlCacheEntry, FindNextUrlCacheEntry, FindCloseUrlCache من أجل التعداد و عند تحديد موقع إدخال الذين المحلية اسم الملف مباريات مسار معين ربما يمكنك استخدام RetrieveUrlCacheEntryFile استرداد الملف.

أنا باستخدام نظام مماثل مع X-Appl المتصفح لعرض WAML تطبيقات الويب و أنها تعمل تماما.ربما يجب أن يكون لديك نظرة على كيف أنها تمكنت من القيام بذلك.

يبدو iexplore يمر قذيفة مساحة الاسم "اسم" الملف بدلا من اسم الملفات.

لا أعتقد أن هناك موثقة طريقة مرت قذيفة item id على سطر الأوامر - explorer لا إلى نفسه ، ولكن هناك تنظيم الاعتبارات قذيفة البند معرفات (مؤشرات) البيانات الثنائية الهياكل التي هي صالحة فقط في عملية واحدة.

ما أحاول القيام به هو:1.دعوة SHGetDesktopFolder التي سوف تعود جذور IShellFolder كائن من قذيفة مساحة الاسم.2.استدعاء IShellFolder::ParseDisplayName لتحويل اسم تعطى لك مرة أخرى إلى شل معرف عنصر قائمة.3.حاول IShellFolder::GetDisplayNameOF مع SHGDN_FORPARSING العلم الذي بصراحة شعور w'eve فقط ذهب في دائرة كاملة و عدنا من حيث بدأنا.لأنني أعتقد أن هذا API هذا المسؤول في النهاية عن عودة "الخطأ" الملفات مسار نسبي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top