অ্যাপ্লিকেশন চলাকালীন .dll ফাইলগুলি প্রতিস্থাপন করবেন?


18

আমার বেশ কয়েকটি গেম সার্ভার রয়েছে যা চালানোর জন্য একটি নির্দিষ্ট .dll ফাইল ব্যবহার করে। কখনও কখনও আমাকে গেম সার্ভারগুলি আপডেট করতে হবে তবে আমি ইতিমধ্যে চলমান গেমগুলিতে বাধা দিতে চাই না।

.Dll ফাইলটি প্রতিস্থাপন করার কোনও উপায় আছে (এটি উইন্ডোজ দ্বারা লক করা হয়েছে) সুতরাং গেম সার্ভারগুলি যে ফাইলগুলি ব্যবহার করে তার পরবর্তী দৃষ্টান্তগুলি নতুন সংস্করণটি খোলায় এবং পুরাতনগুলি পুনরায় আরম্ভ না হওয়া অবধি সেই .dll এর পুরানো সংস্করণটি ব্যবহার করে চলেছে until ?

যেগুলি সেগুলি করে এবং এটি প্রতিস্থাপন করে সেগুলির মধ্যে একটির সাহায্যে কেবল ফাইলটি আনলক করা নিরাপদ?


আপনার খেলা সম্ভবত না। তবে ক্রোম করে আপনার প্রক্রিয়া বিঘ্নিত ছাড়া আপডেট। দুর্ভাগ্যক্রমে, এটি অ্যাপ্লিকেশন-নির্দিষ্ট। (যান %LocalAppData%\Google\Chrome\Applicationএবং আপনার 26.0.1410.64বিভিন্ন ফোল্ডারের ডিএলএল সংরক্ষণ করে এমন ফোল্ডারগুলি দেখতে হবে )
আলভিন ওয়েং

প্রশ্নে থাকা সফ্টওয়্যারটির উপর নির্ভর করে দুটি বা আরও স্বতন্ত্র উদাহরণ ইনস্টল করা এবং চালানো সম্ভব হতে পারে (বিভিন্ন স্থানে)। অদক্ষ, তবে সম্ভবত কার্যক্ষম।
হ্যারি জনস্টন

উত্তর:


23

আসলে, আপনি এটি করতে পারেন এবং এটি সাধারণত কোনও সমস্যা ছাড়াই কাজ করে (যদিও সবসময় না)

আপনি যা করেন তা হ'ল ফাইলটির নাম পরিবর্তন করা এবং এটির উপরে নতুন ফাইলটি সরিয়ে নেওয়া। এটি হ্যান্ডলগুলিকে ফাইলটিতে কার্যকর রাখবে এবং কাজ করবে যাতে প্রাক-বিদ্যমান উদাহরণগুলি এখনও ফাইলটিকে সঠিকভাবে অ্যাক্সেস করতে সক্ষম হতে পারে এবং নতুন দৃষ্টান্ত (বা নতুন হ্যান্ডলগুলি) নতুন ফাইলটিতে যেতে পারে।

স্পষ্টতই, যদি কোনও প্রোগ্রাম একই ডিএল ফাইলটি পুনরায় খোলায় এবং এটি ঠিক একইরূপে থাকার প্রত্যাশা করে (উদাহরণস্বরূপ, যদি dll থেকে সংস্থানগুলি লোড করা যায় এবং ডেল লোড হওয়ার পরে এই সংস্থাগুলির রেফারেন্স কোড চলমান কোড থেকে বের করা হয়) ), এটি সমস্যা সৃষ্টি করবে তবে এটি অবশ্যই আদর্শ নয়।


11

না যদিও অ্যাপ্লিকেশন চলাকালীন কোনও ডিএলএল পুরোপুরি শারীরিক স্মৃতিতে ম্যাপ করা যেতে পারে তবে এর নিশ্চয়তার কোনও নিশ্চয়তা নেই। ডিএলএল (এবং এমনকি এক্সিকিউটেবল) এর অংশগুলি র‌্যামে ম্যাপ করা যায় যখন এর অন্যান্য বিটগুলি ডিস্কে থাকে এবং পরবর্তী সময়ে এটি পড়তে পারে।

উইন্ডোতে র‌্যামে ম্যাপযুক্ত উইন্ডো থাকা অবস্থায় ডিস্কে ফাইল পরিবর্তন করা ভাল শেষ হবে না। উইন্ডোজ একটি ভাল কারণে এটি লক।

সম্পাদনা: আমার কিছু স্পষ্ট করা দরকার যেহেতু কিছু লোক উইন্ডোজকে দোষ দেওয়ার বিষয়ে মনে করে যা আসলে কোনও অ্যাপ্লিকেশন ডিজাইনের সমস্যা, কোনও ওএস ডিজাইনের সমস্যা নয়।

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

সম্পাদনা: এছাড়াও একটি জন্য স্টিফেন এর উত্তর দেখার সম্ভব সমাধান যথাসাধ্য কাজ, কিভাবে তার ডিএলএল আপনার নির্দিষ্ট আবেদন সাড়া পরিবর্তন উপর নির্ভর করে। আমি মনে করি তিনি একটি উত্সাহ প্রাপ্য।


সেই ফাইলটিকে কোনও অস্থায়ী স্থানে নিয়ে যাওয়ার কোনও উপায় আছে যাতে এটি পুরানো স্থানে কোনও নতুন ফাইল রাখার পরে পরে মুছে ফেলা যায় (তারপরে যে সার্ভারগুলি নতুন dll ব্যবহার করবে)? অথবা ফাইল হ্যান্ডেলটি ফাইলের অবস্থানের সাথে যুক্ত?

এটি সম্পূর্ণভাবে নির্ভর করে যে অ্যাপ্লিকেশন কীভাবে লেখা হয় / কীভাবে এটি ডিএলএল ব্যবহার করে। গ্রেগ অ্যাস্কিউর উত্তরটি একবার দেখুন। যদি ফাইল হ্যান্ডেল খোলা থাকে তবে আপনি এটি সম্পর্কে অনেক কিছু করতে পারেন। আপনি জোর করে ফাইল হ্যান্ডেলটি বন্ধ করতে পারেন তবে আপনি অবশ্যই কমপক্ষে আপনার অ্যাপ্লিকেশনটি ক্রাশ করে ফেলবেন, পুরো ওএস না হলে।
রায়ান রেইস

সুতরাং এই "ভাল কারণ" কি? মাইক্রোসফ্ট হট-সোয়াপিংয়ের ক্ষমতাটি কেন দেয় না এমন জোরালো কারণ এখনও পর্যন্ত আপনার উত্তরে নেই।
কনরাড রুডল্ফ

2

না, আপনার বিদ্যমান ফাইল হ্যান্ডলগুলি দিয়ে টিঙ্কার করা উচিত নয়।

আপনি যদি সমাবেশের লোডিং নিয়ন্ত্রণ করতে পারেন এবং এটি ফাইলশেয়ার দিয়ে খোলা আছে তা নির্দিষ্ট করতে পারেন e ডিলিট, তবে এটির নতুন নামকরণ করা সম্ভব হবে। বিদ্যমান প্রক্রিয়াগুলি নাম বদলে দেওয়া সমাবেশটি উল্লেখ করতে থাকবে।

/programming/7147577/programmatic-rename-open-file-on-windows


2
আমার অভিজ্ঞতায়, বেশিরভাগ ক্ষেত্রে (ভাল, অর্ধেকেরও বেশি সময়, কোনও হারে) আপনি অ্যাপ্লিকেশনটির সাথে কোনও ঝোঁক ছাড়াই একটি ডিএলএল নাম পরিবর্তন (তবে মুছতে পারেন না) করতে পারেন।
হ্যারি জনস্টন

@ হ্যারি জোনস্টন: হ্যাঁ মনে হচ্ছে আমি .dll এর নাম পরিবর্তন করতে পারি যদিও এটি ব্যবহারে নেই। আমার ধারণা আমি এখন থেকে এটি করব।

1

না, দুর্ভাগ্যক্রমে এটি সম্ভব নয়।

দুঃখিত, দেরীতে বাইন্ডিং না থাকলে সঠিক হতে হবে অর্থাত্ অ্যাপ্লিকেশনটি সেই ডেলিতে কোডের কিছু অংশ চালানোর সময় সেই ডেলিকে ব্যবহার করে তবে এটি এখনও নির্ভরযোগ্য নয়।


1

আপনি কীভাবে asp.net হোস্ট করা প্রক্রিয়াটি কাজ করে তা দেখতে এবং অনুরূপ কিছু বিকাশ করতে পারে।

এটি পুরো ওয়েব অ্যাপ্লিকেশনটি নেয় এবং এটিকে অস্থায়ী স্থানে নিয়ে যায় যা থেকে অ্যাপ্লিকেশনটি আসলে লোড হয়। তারপরে এটি মূল ফোল্ডারে পরিবর্তনের জন্য নিরীক্ষণের জন্য একটি প্রক্রিয়া ছেড়ে দেয়, যখন সনাক্ত করা যায়, এটি একটি নতুন অস্থায়ী স্থানে অ্যাপ্লিকেশনটির একটি নতুন উদাহরণ স্পিন করে এবং সেই অ্যাপ্লিকেশনটিতে নতুন অনুরোধগুলি পুনর্নির্দেশ শুরু করে। পুরানো অ্যাপ্লিকেশনটি পরে মুলতুবি থাকা অনুরোধগুলি শেষ হয়ে গেলে ছিন্নভিন্ন হয়ে যায়।

(নিতপিকিং, হ্যাঁ, এটি জিনিসগুলির একটি সরল দৃশ্য, বেশিরভাগ ক্ষেত্রে আইআইএস নতুন অ্যাপ্লিকেশন গ্রহণ করতে সক্ষম না হওয়া পর্যন্ত অনুরোধগুলি সারি করে)


0

প্রায় এক দশক আগে, আমি http://www.eggcentric.com/ISAPILoader.htm- এর লাইভ আইআইএস ইসাপি ডিএলএল অদলবদল করে যাচ্ছিলাম এর একজন খুশি ব্যবহারকারী । মিঃ ডিম এখনও তার FOSS সমাধান সমর্থন করে।


0

মেশিন পুনঃসূচনাতে মুভি টু টেম্প হিসাবে এনএসআইএস ইনস্টলারটির একটি বিকল্প রয়েছে, ওএস পরের বুটটিতে বিভিন্ন স্থানে যাওয়ার জন্য ওএস কিছু ফাইল ফ্ল্যাগ করে, পরবর্তী মেশিন বুটে এই পতাকাযুক্ত ফাইলগুলি স্বয়ংক্রিয়ভাবে আপনি পূর্বে নির্বাচিত নতুন স্থানে চলে যান। এ সম্পর্কে একটি সামান্য অনুসন্ধান আপনাকে এই শুভেচ্ছায় আনন্দিত করবে।


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