কোনও ফাইলে লগইনের পরিবর্তে স্টাডাউটে প্রতিধ্বনিত হওয়ার জন্য মেসিেক্সেক পেতে কী আছে?


8

অবিচ্ছিন্ন বিতরণ পাইপলাইনের অংশ হিসাবে আমি একটি প্রদত্ত মেশিনে একটি এমএসআই ইনস্টল করতে চাই। msiexec প্লাস psexec এটি নিখুঁতভাবে করে, তবে মনে হয় যে msiexec কেবল একটি ফাইলে লগইন করতে পারে এবং আমার এটি stdout / stderr এ লগ করতে হবে need

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

এর আগে কি কেউ এই সমস্যার মুখোমুখি হয়েছে (এবং এটি কাটিয়ে উঠেছে?)

এখানে কোনও সহায়তার জন্য আগাম ধন্যবাদ।

ছাপ


ফাইল লগিংয়ে এমসেক্সেক্সের বিল্ট ব্যবহার করুন এবং ডিস্ক থেকে ফিরে পড়ুন read বেশ কয়েকটি msiexec.exe প্রক্রিয়া ইনস্টলেশন চলাকালীন চালু করা যেতে পারে এবং আমি মনে করি আপনি তাদের সমস্তের আউটপুট পুনর্নির্দেশ করতে কঠোরভাবে চাপতে চাইছেন। আপনি দেখতে পাবেন স্বয়ংক্রিয়ভাবে স্প্যানড এমএসএেক্সেক.এক্সএক্স প্রক্রিয়াগুলি বিভিন্ন সুরক্ষা প্রসঙ্গে এবং কাস্টম ক্রিয়াকলাপ চালানোর জন্য চলছে। কৃমি একটি ক্যান আমি মোকাবেলা করতে বলতে চাই।
স্টেইন এসমুল

উত্তর:


5

আমি এটি আবার চেক করেছি, এবং এখানে কিছু আপডেট তথ্য রয়েছে :

এমএসআই জিইআইআইকে দমন করা এবং তৃতীয় পক্ষ দ্বারা প্রয়োগ করা একটি বাহ্যিক জিইউআই সেট করা সম্ভব । এই বাহ্যিক GUI ইনস্টলেশনটি সম্পাদন করার সাথে সাথে msiexec.exe থেকে বার্তা গ্রহণ করতে সক্ষম । এটি বেশিরভাগই একটি কাস্টম অগ্রগতি বার বাস্তবায়নের জন্য , তবে মনে হয় আপনি বেশিরভাগ অন্যান্য ত্রুটি বার্তাগুলি এবং স্থিতি বার্তাগুলিকেও আটকাতে পারেন : MsiSetExternUI ফাংশন

আকর্ষণীয় প্যারামিটারটি হ'ল ডাব্লু মেসেজফিল্টার । এটি সেট করে আপনি উদাহরণস্বরূপ, ইনস্টলেশন চলাকালীন ঘটে যাওয়া কেবল ত্রুটি বার্তাগুলি গ্রহণ করতে পারেন - বা তাই মনে হয়। আমি মনে করি এটি বেশিরভাগ উদ্দেশ্যেই যথেষ্ট হতে পারে।

INSTALLUI_HANDLER MsiSetExternalUI(
  _In_  INSTALLUI_HANDLER puiHandler,
  _In_  DWORD dwMessageFilter,
  _In_  LPVOID pvContext
);

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

কমান্ড লাইন ইন্টারফেস স্তর , এছাড়াও আপনি লগিং ফাইলে অবিলম্বে তার বাফার ঘনিষ্ঠরূপে যোগ করে সেট করতে পারেন ! পরামিতি:

msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log" 

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


3

MsiExec কেবলমাত্র একটি ফাইলে লগইন করতে পারেন, সুতরাং ইনস্টলারটি শেষ হওয়ার পরে আপনাকে সেই ফাইলটির সামগ্রীর প্রতিধ্বনি রাখতে হবে।


1

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

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

সমস্ত এমএসআই ফাইলের জন্য লগিং সেট আপ করতে "মেশিনে সমস্ত সেটআপের জন্য বিশ্বব্যাপী" বিভাগটি দেখুন: http://www.installsite.org/pages/en/msifaq/a/1022.htm


0

আমি নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্টটি ব্যবহার করি। এটি এখনও একটি ফাইলে লগ লিখতে প্রয়োজন তবে এটি লিখিত সামগ্রী লাইভ স্টাডাউটকেও লিখে দেয়:

$main_process = Start-Process -FilePath ".\installer.exe" -ArgumentList "/S /V`"/qn /l*! output.log`"" -NoNewWindow -PassThru
$log_process = Start-Process "powershell" "Get-Content -Path output.log -Wait" -NoNewWindow -PassThru
$main_process.WaitForExit()
$log_process.Kill()
exit $main_process.ExitCode
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.