ভিজ্যুয়াল স্টুডিওতে তৈরি উইন্ডোজ পরিষেবা ইনস্টল করুন


136

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

আমি নিম্নলিখিত পদক্ষেপগুলি চেষ্টা করেছি:

  1. নতুন প্রকল্প ফাইল তৈরি করুন -> নতুন -> প্রকল্প -> উইন্ডোজ পরিষেবা
  2. প্রকল্পের নাম: টেস্ট সার্ভিস
  3. প্রকল্পটি যেমন তৈরি করুন (সার্ভিস 1 কনস্ট্রাক্টর, অন স্টার্ট, অনস্টপ)
  4. কমান্ড প্রম্পট ওপেন করুন, "সি: \ উইন্ডোজ \ মাইক্রোসফ্ট। নেট \ ফ্রেমওয়ার্ক \ v4.0.30319 \ ইনস্টলটুইট.এক্সি" টেস্টসোর্স.ইক্সি চালান
  5. নেট স্টার্ট টেস্ট সার্ভিস চালান ।

পদক্ষেপ 4 আউটপুট

লেনদেন করা ইনস্টলেশন চলছে।

ইনস্টলেশন ইনস্টলেশন পর্ব শুরু।

সি: \ ব্যবহারকারীদের \ myusername \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পসমূহ \ টেস্ট সার্ভিস \ টেস্ট সার্ভিস \ আপত্তি \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সই সমাবেশের অগ্রগতির জন্য লগ ফাইলের সামগ্রীগুলি দেখুন See

ফাইলটি সি: \ ব্যবহারকারীদের \ মাইজারনেম \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পসমূহ es টেস টি সার্ভিস \ টেস্ট সার্ভিস \ আপত্তি \ x86 \ ডিবাগ \ টেস্ট সার্ভিস.আইনস্টললগ এ অবস্থিত।

সমাবেশ 'সি: \ ব্যবহারকারীদের \ মাইজারনেম \ নথিগুলি \ ভিজ্যুয়াল স্টুডিও 2010 Install প্রকল্পগুলি \ টেস্টএস এরভিস \ টেস্টসোর্সাইজেশন \জেজি \ x86 \ ডিবাগ \ টেস্টসোর্স.ইক্সি' ইনস্টল করা হচ্ছে।

আক্রান্ত প্যারামিটারগুলি হ'ল:

লগটোকনসোল =

লগফিল = সি: \ ব্যবহারকারীগণ \ মাইজারনেম \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্ট সার্ভিস \ টি এসট সার্ভিস \ اعتراض \ x86 \ ডিবাগ \ টেস্টসোর্স.আইনস্টললগ

অ্যাসেম্বলিপথ = সি: \ ব্যবহারকারীগণ \ মাইজারনেম \ নথিগুলি \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্টসার্ভ বরফ \ টেস্টসোর্সেস \জেজি \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সই

রানইনস্টলারঅ্যাট্রিবিউটের সাথে কোনও পাবলিক ইনস্টলার নেই es এই বৈশিষ্ট্যটি সি: \ ব্যবহারকারীদের \ মাইজারনেম \ নথিগুলি \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্টসোর্সাই \ টেস্টসি rvice \জেজ \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সভি সমাবেশে পাওয়া যায়নি।

ইনস্টল পর্বটি সফলভাবে সমাপ্ত হয়েছে, এবং প্রতিশ্রুতি পর্ব শুরু হচ্ছে।

সি: \ ব্যবহারকারীদের \ myusername \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পসমূহ \ টেস্ট সার্ভিস \ টেস্ট সার্ভিস \ আপত্তি \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সই সমাবেশের অগ্রগতির জন্য লগ ফাইলের সামগ্রীগুলি দেখুন See

ফাইলটি সি: \ ব্যবহারকারীদের \ মাইজারনেম \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পসমূহ es টেস টি সার্ভিস \ টেস্ট সার্ভিস \ আপত্তি \ x86 \ ডিবাগ \ টেস্ট সার্ভিস.আইনস্টললগ এ অবস্থিত।

কমিটিকেটিং কমিটিকে 'সি: \ ব্যবহারকারীগণ u মাইজারনেম \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 jects প্রকল্পগুলি \ টেস্টএস এরভিস \ টেস্টসোর্সাইজেশন \জেজ \ x86 \ ডিবাগ \ টেস্টসোর্স.ইক্সি।

আক্রান্ত প্যারামিটারগুলি হ'ল:

লগটোকনসোল =

লগফিল = সি: \ ব্যবহারকারীগণ \ মাইজারনেম \ ডকুমেন্টস \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্ট সার্ভিস \ টি এসট সার্ভিস \ اعتراض \ x86 \ ডিবাগ \ টেস্টসোর্স.আইনস্টললগ

অ্যাসেম্বলিপথ = সি: \ ব্যবহারকারীগণ \ মাইজারনেম \ নথিগুলি \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্টসার্ভ বরফ \ টেস্টসোর্সেস \জেজি \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সই

রানইনস্টলারঅ্যাট্রিবিউটের সাথে কোনও পাবলিক ইনস্টলার নেই es এই বৈশিষ্ট্যটি সি: \ ব্যবহারকারীদের \ মাইজারনেম \ নথিগুলি \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্টসোর্সাই \ টেস্টসি rvice \জেজ \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সভি সমাবেশে পাওয়া যায়নি।

ইনস্টলস্টেট ফাইলটি সরান কারণ কোনও ইনস্টলার নেই।

কমিট পর্বটি সফলভাবে শেষ হয়েছে।

লেনদেন করা ইনস্টল শেষ হয়েছে।

পদক্ষেপ 5 এর আউটপুট

পরিষেবার নামটি অবৈধ।

নেট হেল্পএমএসজি 2185 টাইপ করে আরও সহায়তা পাওয়া যায়।

উত্তর:


243

আপনাকে ডিজাইনারে সার্ভিস.এস ফাইলটি খুলতে হবে, ডানদিকে ক্লিক করুন এবং "ইনস্টলার ইনস্টল করুন" মেনু-বিকল্পটি নির্বাচন করুন।

এটি ঠিক বাক্সের বাইরে ইনস্টল করবে না ... আপনাকে প্রথমে ইনস্টলার শ্রেণি তৈরি করতে হবে।

পরিষেবা ইনস্টলার সম্পর্কিত কিছু উল্লেখ:

কীভাবে: আপনার পরিষেবা অ্যাপ্লিকেশনটিতে ইনস্টলার যুক্ত করুন

বেশ পুরানো ... তবে আমি এই বিষয়েই বলছি:

সি # তে উইন্ডোজ পরিষেবাদি: ইনস্টলার যুক্ত করা হচ্ছে (অংশ 3)

এটি করার মাধ্যমে একটি ProjectInstaller.csস্বয়ংক্রিয় তৈরি হবে। তারপরে আপনি এটিতে ডাবল ক্লিক করতে পারেন, ডিজাইনার প্রবেশ করুন এবং উপাদানগুলি কনফিগার করতে পারেন:

  • serviceInstaller1সেবা নিজেই বৈশিষ্ট্য আছে: Description, DisplayName, ServiceNameএবং StartTypeসবচেয়ে গুরুত্বপূর্ণ।

  • serviceProcessInstaller1এই গুরুত্বপূর্ণ সম্পত্তি আছে: Accountএটি অ্যাকাউন্ট যা পরিষেবা চালানো হবে।

উদাহরণ স্বরূপ:

this.serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;

3
ইনস্টলার যুক্ত করে এবং অ্যাকাউন্টটি লোকালসিস্টেমে সেট করে এটি করেছে। ধন্যবাদ!
লুক

1
আমি ভিএস ২০১৩ এ একই ত্রুটি পাচ্ছি। আপনার সরবরাহিত লিঙ্কগুলি আমি যাচাই করেছিলাম, যাচাই করেছিলাম যে আমার কাছে প্রোজেক্টইনস্টলার রয়েছে, উপাদান পরিষেবা [প্রক্রিয়া] ইনস্টলার 1 সহ, সঠিকভাবে কনফিগার করা আছে। অ্যাডমিনিস্ট্রেটর হিসাবে ইন্সটল.টি.এক্স.ই. এটি এখনও প্রতিবেদন করে "রানইনস্টলার অ্যাট্রিবিউটে কোনও পাবলিক ইনস্টলার নেই es কোন ধারনা?
ব্যারি ডাইজার্ট

4
হাঃ হাঃ হাঃ. আমি পছন্দ করি যে "বেশ পুরানো" লিঙ্কটি আর্কেইন কোড নামক কোনও সাইটের সাথে। পৃষ্ঠাটি যত পুরানো হবে, নামটি সত্য হয়ে যায় :-)
হটএন

"ডিজাইনার" কী? যে অ্যাপ্লিকেশনগুলিতে ইউআই থাকে না সেগুলিতে সাধারণত এমন কিছু জড়িত না যা ডিজাইনার বলে।
ম্যাক্সেক্স

পরিষেবাদিগুলিরও ফর্মগুলির মতো ডিজাইনার রয়েছে
গ্রানংডোলা

11

দিকে তাকাও:

রানইনস্টলারঅ্যাট্রিবিউটের সাথে কোনও পাবলিক ইনস্টলার নেই es এই বৈশিষ্ট্যটি সি: \ ব্যবহারকারীদের \ মাইজারনেম \ নথিগুলি \ ভিজ্যুয়াল স্টুডিও 2010 \ প্রকল্পগুলি \ টেস্টসোর্সাই \ টেস্টসি rvice \জেজ \ x86 \ ডিবাগ \ টেস্টসোর্সেস.এক্সভি সমাবেশে পাওয়া যায়নি।

দেখে মনে হচ্ছে আপনার কোডে কোনও ইনস্টলার ক্লাস নাও থাকতে পারে। এটি এমন একটি বর্গ যা উত্তরাধিকার সূত্রে প্রাপ্ত Installerহবে যাতে installutilকীভাবে পরিষেবা হিসাবে আপনার এক্সিকিউটেবলকে ইনস্টল করতে হয়।

PS এখানে আমার নিজের স্ব-ইনস্টল / ডিবাগযোগ্য উইন্ডোজ পরিষেবা টেম্পলেট রয়েছে যা আপনি কোডটি অনুলিপি বা ব্যবহার করতে পারেন: ডিবাজিযোগ্য, স্ব-ইনস্টলিং উইন্ডোজ পরিষেবা


আমি যখন ভিজ্যুয়াল স্টুডিও -> বৈশিষ্ট্য -> পরিষেবাদিতে টেস্টসেব্রিজ প্রকল্পটি ডান ক্লিক করি, পৃষ্ঠাটি অক্ষম করা হয় ... আপনি কি অন্য কোনও অবস্থানের কথা উল্লেখ করছেন? প্রয়োগের অধীনে, বিধানসভার নাম টেস্ট সার্ভিস।
jkh

@ জন: পরিষেবাদি কনসোল সম্পর্কে প্রথম অংশটি উপেক্ষা করুন, দ্বিতীয় অংশটি প্রকৃতপক্ষে শুরু করে দেখুন । দেখে মনে হচ্ছে পরিষেবাটি কখনও ইনস্টল করা হয়নি কারণ এটি কোনও ইনস্টলার খুঁজে পায়নি।
জেমস মাইকেল হ্যারে

8

ইনস্টলারটি তৈরি করার এবং ত্রুটি বার্তাটি থেকে মুক্তি পাওয়ার জন্য এখানে একটি বিকল্প উপায়। এছাড়াও মনে হচ্ছে ভিএস2015 এক্সপ্রেসের "ইনস্টলার যোগ করুন" মেনু আইটেম নেই।

আপনাকে কেবল একটি শ্রেণি তৈরি করতে হবে এবং নীচের কোডটি যুক্ত করতে হবে এবং রেফারেন্সটি System.Configration.Install.dll যুক্ত করতে হবে।

using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;


namespace SAS
{
    [RunInstaller(true)]
    public class MyProjectInstaller : Installer
    {
        private ServiceInstaller serviceInstaller1;
        private ServiceProcessInstaller processInstaller;

        public MyProjectInstaller()
        {
            // Instantiate installer for process and service.
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller1 = new ServiceInstaller();

            // The service runs under the system account.
            processInstaller.Account = ServiceAccount.LocalSystem;

            // The service is started manually.
            serviceInstaller1.StartType = ServiceStartMode.Manual;

            // ServiceName must equal those on ServiceBase derived classes.
            serviceInstaller1.ServiceName = "SAS Service";

            // Add installer to collection. Order is not important if more than one service.
            Installers.Add(serviceInstaller1);
            Installers.Add(processInstaller);
        }
    }
}

পাশাপাশি VS2015 চালানো এবং এই সমাধানটি "রানআইনস্টলারঅ্যাট্রিবিউটের সাথে কোনও পাবলিক ইনস্টলার নেই। হ্যাঁ" ত্রুটি বার্তা যা আমি আগে পেয়েছিলাম তা পেরিয়ে গেছে। ধন্যবাদ!
PHBeagle

6

দুটি সাধারণ সমস্যা:

  1. প্রজেক্টইনস্টলার ক্লাস হারিয়েছে (@ মিগুয়েলএঞ্জেলো ইঙ্গিত করেছেন)
  2. কম্যান্ড প্রম্প্ট আবশ্যক "হিসাবে চালায় প্রশাসক "

4

আর একটি সম্ভাব্য সমস্যা (যার মধ্যে আমি দৌড়ে এসেছি):

ProjectInstallerক্লাস যে নিশ্চিত হন public। সত্যি বলতে কী, আমি ঠিক কীভাবে এটি করেছি তা নিশ্চিত নই, তবে ইভেন্ট হ্যান্ডলারগুলিকে আমি যুক্ত করেছি ProjectInstaller.Designer.cs:

this.serviceProcessInstaller1.BeforeInstall += new System.Configuration.Install.InstallEventHandler(this.serviceProcessInstaller1_BeforeInstall);

আমি অনুমান করি ProjectInstaller.csএটির মধ্যে হ্যান্ডলার ফাংশন তৈরির স্বয়ংক্রিয় প্রক্রিয়া চলাকালীন শ্রেণীর সংজ্ঞাটি পরিবর্তিত হয়েছিল

public class ProjectInstaller : System.Configuration.Install.Installer

প্রতি

partial class ProjectInstaller : System.Configuration.Install.Installer

publicসাথে কীওয়ার্ডটি প্রতিস্থাপন করা হচ্ছে partial। সুতরাং, এটি ঠিক করার জন্য এটি অবশ্যই করা উচিত

public partial class ProjectInstaller : System.Configuration.Install.Installer

আমি ভিজ্যুয়াল স্টুডিও 2013 সম্প্রদায়ের সংস্করণ ব্যবহার করি।


আমি জানি এটি 3 বছর পরে, তবে এটি আমার সমস্যার সমাধান করেছে। কেন বা কখন ডিজাইনার পূর্ববর্তী পাবলিক আংশিক শ্রেণিকে অভ্যন্তরীণ আংশিক শ্রেণিতে পরিবর্তন করেছে তা নিশ্চিত নয়। ধন্যবাদ!
trashrobber

2

ভিএস ২০১০ এবং .NET 4.0 এবং তারপরে স্টিলথ পরিবর্তন

রানইনস্টলারঅ্যাট্রিবিউটের কোনও পাবলিক ইনস্টলার নেই es

.NET- এ একটি উপনাম পরিবর্তন বা সংকলক ক্লিনআপ রয়েছে যা আপনার নির্দিষ্ট কেসের জন্য এই সামান্য তাত্পর্য প্রকাশ করতে পারে।

আপনার যদি নিম্নলিখিত কোডগুলি থাকে ...

RunInstaller(true)   // old alias  

আপনার এটি আপডেট করার প্রয়োজন হতে পারে

RunInstallerAttribute(true)  // new property spelling

এটি সংকলনের সময় বা রানটাইমের সময় কভারগুলির আওতায় পরিবর্তিত কোনও উপাধির মতো এবং আপনি এই ত্রুটি আচরণটি পাবেন। রানআইনস্টলারঅ্যাট্রিবিউট (সত্য) এর উপরোক্ত সুস্পষ্ট পরিবর্তন এটিকে সমস্ত মেশিনে আমাদের ইনস্টল করার সমস্ত পরিস্থিতিতে দৃ fixed় করেছে।

আপনি প্রকল্প বা পরিষেবা ইনস্টলার যুক্ত করার পরে "পুরাতন" রানইনস্টলার (সত্য) জন্য পরীক্ষা করুন এবং এটিকে নতুন রানইনস্টলারঅ্যাট্রিবিউটে (সত্য) পরিবর্তন করুন


আমার জ্ঞান অনুসারে আপনি "অ্যাট্রিবিউট" পোস্টফিক্স বাদ দিতে পারেন, অর্থাৎ [রানইনস্টলার (সত্য)] এবং [রানইনস্টলারঅ্যাট্রিবিউট (সত্য)] একই is এটি একটি আলাদা বৈশিষ্ট্য দিয়ে চেষ্টা করুন, যেমন [ডিবাগারস্টেপ থ্রো ()] এবং [ডিবাগারস্টেপ থ্রোঅ্যাট্রিবিউট ()] - ক্লাসে প্রয়োগ করার সময় উভয়ই কাজ করবে।
ম্যাট

1

তবুও আমি আরও একটি ধরা পড়েছিলাম: আপনার ইনস্টলার থেকে প্রাপ্ত ক্লাসটি নিশ্চিত করুন (সাধারণত ProjectInstaller) নামের স্থানের শ্রেণিবিন্যাসের শীর্ষে রয়েছে, আমি অন্য পাবলিক ক্লাসের মধ্যে একটি পাবলিক ক্লাস ব্যবহার করার চেষ্টা করেছি, তবে ফলাফলটি একই পুরানো ত্রুটির মধ্যে রয়েছে:

রানইনস্টলারঅ্যাট্রিবিউটের কোনও পাবলিক ইনস্টলার নেই es

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.