কোন ইনস্টলার প্যাকেজ কোনও প্রদত্ত উদাহরণ / dll এর অন্তর্গত তা কীভাবে সন্ধান করবেন


11

আমি জানতে চাইব যে MSI আমার সিস্টেমে একটি প্রদত্ত dll বা এক্সেল ইনস্টল করেছে। আমি জানি যে উইন্ডোজ মুছে ফেলা ফাইলগুলি কোনও ইনস্টল করা প্যাকেজভুক্ত থাকলে তা স্থির করে। ফাইলটি না মুছেই আমি কি সেই তথ্যটি জিজ্ঞাসা করতে পারি? কোনও প্যাকেজের কোন প্যাকেজের অন্তর্ভুক্ত তা যাচাই করার জন্য কি কোনও সরঞ্জাম বা উইন 32 এপিআই রয়েছে?

উত্তর:


7

দেখে মনে হচ্ছে এর পরেও কোনও উপায় থাকতে পারে! আমি সম্প্রতি নিম্নলিখিত সাবট্রির অধীনে উইন্ডোজ ইনস্টলার দ্বারা ইনস্টল করা ফাইলগুলির জন্য রেজিস্ট্রি এন্ট্রিগুলি আবিষ্কার করেছি:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

আমি সেখানে সংরক্ষিত তথ্য ব্যবহার করে কোনও ফাইলের জন্য ইনস্টলারটি অনুসন্ধান করতে একটি পাইথন স্ক্রিপ্ট লিখেছিলাম:

> python windows-installer-file-search.py opus.dll
File: C:\Program Files (x86)\Mumble\opus.dll
Product: Mumble 1.2.13
Install user: S-1-5-18
Cached installer: C:\Windows\Installer\2f6b072.msi

এটি এখানে উপলভ্য: https://github.com/Zero3/windows-installer-file-search


কি দারুন. 2.5 বছর পরে আপনি এই প্রশ্নটি পেরেক দিয়েছিলেন। এই সাবট্রিটি দেখে, এখন আমি বুঝতে পারি যে কেন উইন্ডোজ বুট আপ করতে এত সময় লাগে। অ্যাপ্লিকেশনটির প্রতিটি প্রয়োগের ক্ষেত্রে কাজ করতে "আপনার অ্যাপ্লিকেশনটি দুর্নীতিগ্রস্থ, ডিস্ক সন্নিবেশ করুন" বৈশিষ্ট্যটির জন্য এটি মেমোরিতে সূচকযুক্ত করতে হবে।
উইগি

6

আপনি যদি খড়ের খালি খালি কলুষিত সূঁচগুলি সন্ধানের সাথে ঠিক থাকেন তবে 7-জিপের এই দ্রুত এবং নোংরা আপত্তি কাজ করবে:

7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt

তারপরে যে needlelist.txtকোনও পাঠ্য সম্পাদককে খুলুন , অনুসন্ধান করুন needlename.dllএবং আপনি 7-জিপ দ্বারা উত্পাদিত তালিকায় সংশ্লিষ্ট .msi প্যাকেজটি পাবেন।

(দ্রষ্টব্য: এই পদ্ধতিটি 'নোংরা' কারণ এটি আপনাকে জানায় যে কোন .msi প্যাকেজগুলির মধ্যে একটি ফাইল রয়েছে needlename.dllBut তবে বেশিরভাগ ব্যবহারের ক্ষেত্রে এটি সম্ভবত ভাল)


প্রকৃতপক্ষে, এটি 7-জিপের চালাক আপত্তি। ইনস্টলার কি সর্বদা সেই সি: \ উইন্ডোজ \ ইনস্টলার ফোল্ডারে এমএসআই অনুলিপি করে বা এটি কেবল একটি কনভেনশন যা অবরুদ্ধ হতে পারে? অন্য কোনও উপায় নেই (এবং আপনার উত্তর গ্রহণ করে) এই সত্যটি গ্রহণ করার আগে আমি এখনও একটি মার্জিত উইন 32 এপিআইয়ের জন্য অপেক্ষা করছি।
উইগি

আমি যতদূর জানি উইন্ডোজ ইনস্টলার সবসময় ফোল্ডারে MSIs ইনস্টল ক্যাশে (এছাড়াও দেখুন superuser.com/questions/473569/... )। এর কারণটি যৌক্তিক: ইনস্টলারটিও আনইনস্টলার। ব্যবহারকারী যখন অ্যাপ্লিকেশনটি আনইনস্টল করতে চান তখন উইন্ডোজ এটি কার্যকর করতে একটি পরিচিত স্থানে আনইনস্টলারের একটি অনুলিপি প্রয়োজন। আসল এমএসআই সম্ভবত সম্ভবত এই সময়ে বহু বছর আগে মুছে ফেলা হয়েছে, উইন্ডোজ ইনস্টলেশনের সময় একটি অনুলিপি সংরক্ষণ করে।
জিরো 3

একটি এপিআই সম্পর্কিত: বেশিরভাগ লিনাক্স ডিস্ট্রোস (এবং এর মতো) এর বিপরীতে উইন্ডোজ (কমপক্ষে উইন্ডোজ 8 এর পূর্বে) অপারেটিং সিস্টেমে একটি যথাযথ প্যাকেজ ম্যানেজমেন্ট সিস্টেম তৈরি করে না, যা এই জাতীয় জিনিসের জন্য অনুসন্ধান করতে সক্ষম। এটি সম্ভবত সমস্ত ইনস্টলড এমএসআই দ্বারা চালিত হয়ে লক্ষ্য ফাইলের জন্য তাদের মধ্যে অনুসন্ধান করার জন্য একটি অ্যাপ্লিকেশন তৈরি করতে পারে (মূলত আমার উত্তরটি সঠিকভাবে প্রয়োগ করা হয়েছে), তবে এটি বাক্সের বাইরে প্রয়োগ করা হবে বলে মনে হয় না। আমি অবশ্যই ভুল হতে পারি।
জিরো 3

ঠিক আছে, আমি এটি একটি উত্তর হিসাবে গ্রহণ। যদিও আমরা প্রমাণ করতে পারি না যে এর জন্য কোনও উইন 32 এপিআই নেই, আমার অনুভূতি ছিল যে এমএসআই কোনওভাবেই কোনও সঠিক পাবলিক এপিআই ছাড়াই প্রক্রিয়া লোডিংয়ের দিকে ঝুঁকে পড়েছে।
উইগি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.