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


152

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


এটি ইতিমধ্যে নিম্নলিখিত মাইক্রোসফ্ট কেবি নিবন্ধে নথিভুক্ত করা হয়েছে: support.microsoft.com/en-us/kb/816169
স্লেয়ারনোহ

উত্তর:


227

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

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

এখন আপনার একটি সেটআপ প্রকল্প করা দরকার to সবচেয়ে ভাল কাজটি হ'ল সেটআপ উইজার্ডটি ব্যবহার করা।

  1. আপনার সমাধানটিতে ডান ক্লিক করুন এবং একটি নতুন প্রকল্প যুক্ত করুন: যুক্ত করুন> নতুন প্রকল্প> সেটআপ এবং স্থাপনা প্রকল্পসমূহ> সেটআপ উইজার্ড

    ক। ভিজ্যুয়াল স্টুডিওর বিভিন্ন সংস্করণের জন্য এটি কিছুটা পরিবর্তিত হতে পারে। খ। ভিজ্যুয়াল স্টুডিও 2010 এটিতে অবস্থিত: টেমপ্লেটগুলি ইনস্টল করুন> অন্যান্য প্রকল্পের প্রকারগুলি> সেটআপ এবং স্থাপনা> ভিজ্যুয়াল স্টুডিও ইনস্টলার

  2. দ্বিতীয় ধাপে "উইন্ডোজ অ্যাপ্লিকেশনটির জন্য একটি সেটআপ তৈরি করুন" নির্বাচন করুন।

  3. তৃতীয় ধাপে, "প্রাথমিক আউটপুট ..." নির্বাচন করুন

  4. শেষ করতে ক্লিক করুন।

সঠিক আউটপুট অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করার জন্য আপনার ইনস্টলারটি সম্পাদনা করুন।

  1. আপনার সলিউশন এক্সপ্লোরারের সেটআপ প্রকল্পে ডান ক্লিক করুন।
  2. দেখুন> কাস্টম ক্রিয়া নির্বাচন করুন। (ভিএস ২০০৮ এ এটি দেখুন> সম্পাদক> কাস্টম অ্যাকশন হতে পারে)
  3. কাস্টম অ্যাকশন গাছের ইনস্টল ক্রিয়াটিতে ডান ক্লিক করুন এবং 'কাস্টম অ্যাকশন যুক্ত করুন ...' নির্বাচন করুন
  4. "প্রকল্পে আইটেম নির্বাচন করুন" কথোপকথনে, অ্যাপ্লিকেশন ফোল্ডারটি নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  5. "প্রাথমিক আউটপুট ..." বিকল্পটি নির্বাচন করতে ওকে ক্লিক করুন। একটি নতুন নোড তৈরি করা উচিত।
  6. প্রতিশ্রুতিবদ্ধতা, রোলব্যাক এবং আনইনস্টল কর্মের জন্য পদক্ষেপ 4 - 5 এর পুনরাবৃত্তি করুন।

আপনার সমাধানে ইনস্টলার প্রকল্পটি ডান ক্লিক করে ইনস্টলার আউটপুট নামটি সম্পাদনা করতে পারেন এবং বৈশিষ্ট্যগুলি নির্বাচন করতে পারেন। 'আউটপুট ফাইলের নাম:' আপনি যা খুশি তে পরিবর্তন করুন। পাশাপাশি ইনস্টলার প্রকল্পের নির্বাচন এবং বৈশিষ্ট্য উইন্ডোজ দিকে তাকিয়ে করার মাধ্যমে, আপনি সম্পাদনা করতে পারেন Product Name, Title, Manufacturer, ইত্যাদি ...

এরপরে আপনার ইনস্টলারটি তৈরি করুন এবং এটি একটি এমএসআই এবং একটি সেটআপ.এক্সই উত্পাদন করবে। আপনার পরিষেবা মোতায়েন করতে আপনি যে কোনওটিই ব্যবহার করতে চান তা চয়ন করুন।


37
@ এল রনোকো, পোস্ট দেওয়ার অনেক আগেই আমার উত্তর ছিল। আমি এখানে এটি দলিল করতে চেয়েছিলাম কারণ আমি প্রতি 6 - 12 মাস অন্তর এটি সন্ধান করতে পারি (এবং এটি সন্ধান করা এত সহজ ছিল না) এখন আমার কাছে এটি সহজেই সন্ধানযোগ্য এবং আমি নিজেই এটি সন্ধান করতে পারি :)
কেলসি

1
দুর্ভাগ্যক্রমে, এটিও ভুল উত্তর। হ্যাঁ, আমি জানি আপনি এটি বই এবং এমএসডিএন-তে পেয়ে যাবেন তবে এটি এমন একটি ক্ষেত্রে যেখানে মাইক্রোসফ্টের একটি গ্রুপ মাইক্রোসফ্টের অন্য একটি গ্রুপের সাথে কথা বলেনি এবং ইতিমধ্যে সমাধান হওয়া কোনও সমস্যার নিকৃষ্ট সমাধান নিয়ে এসেছিল। আরও তথ্যের জন্য blog.iswix.com/2006/07/msi-vs-net.html দেখুন ।
ক্রিস্টোফার পেইন্টার

9
@ ক্রিস্টোফার পেইন্টার আমি এমএস ইনস্টলারটি 2k5 সাল থেকে ব্যবহার করে আসছি এবং এতে কখনও সমস্যা হয়নি। আপনি এটির সাথে একমত হন বা না হন এবং এটি একটি 'অ্যান্টি-প্যাটার্ন' হিসাবে বিবেচনা করুন এই প্রশ্নের মূল বিষয় নয়, আমি কীভাবে এক্স এর সাথে করব, তা নয় কীভাবে আমি খ দিয়ে একটি করব। আমি যখন প্রশ্ন পোস্ট করি তখন এটি ডকুমেন্টেশনের উদ্দেশ্যে ছিল।
কেলসি

3
তারপরে আপনি 6 বছর ধরে ভাগ্যবান হচ্ছেন আপনি কেবল এটি জানেন না। আপনি পড়তে চাইতে পারেন: robmensching.com/blog/posts/2007/4/19/…
ক্রিস্টোফার পেইন্টার

1
আপনি যদি Service name contains invalid characters, is empty, or is too long (max length = 80)ইনস্টলার যুক্ত করার সময় ত্রুটি পান তবে ধূসর অঞ্চলে আবার ডান ক্লিক করুন, সম্পত্তিগুলিতে যান এবং নিশ্চিত করুন যে পরিষেবার নাম মান সেট করা আছে।
ওলফিউউক

51

আমি আমার পরিষেবা প্রকল্পে ইনস্টলার ক্লাস যুক্ত করার জন্য কেলসির প্রথম সেটগুলি অনুসরণ করি, তবে এমএসআই বা সেটআপ.এক্সই ইনস্টলার তৈরি করার পরিবর্তে আমি পরিষেবাটি স্ব-ইনস্টল / আনইনস্টল করি all আমার পরিষেবাগুলির একটির থেকে নমুনা কোডের একটি বিট এখানে আপনি প্রাথমিক পয়েন্ট হিসাবে ব্যবহার করতে পারেন।

public static int Main(string[] args)
{
    if (System.Environment.UserInteractive)
    {
        // we only care about the first two characters
        string arg = args[0].ToLowerInvariant().Substring(0, 2);

        switch (arg)
        {
            case "/i":  // install
                return InstallService();

            case "/u":  // uninstall
                return UninstallService();

            default:  // unknown option
                Console.WriteLine("Argument not recognized: {0}", args[0]);
                Console.WriteLine(string.Empty);
                DisplayUsage();
                return 1;
        }
    }
    else
    {
        // run as a standard service as we weren't started by a user
        ServiceBase.Run(new CSMessageQueueService());
    }

    return 0;
}

private static int InstallService()
{
    var service = new MyService();

    try
    {
        // perform specific install steps for our queue service.
        service.InstallService();

        // install the service with the Windows Service Control Manager (SCM)
        ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
    }
    catch (Exception ex)
    {
        if (ex.InnerException != null && ex.InnerException.GetType() == typeof(Win32Exception))
        {
            Win32Exception wex = (Win32Exception)ex.InnerException;
            Console.WriteLine("Error(0x{0:X}): Service already installed!", wex.ErrorCode);
            return wex.ErrorCode;
        }
        else
        {
            Console.WriteLine(ex.ToString());
            return -1;
        }
    }

    return 0;
}

private static int UninstallService()
{
    var service = new MyQueueService();

    try
    {
        // perform specific uninstall steps for our queue service
        service.UninstallService();

        // uninstall the service from the Windows Service Control Manager (SCM)
        ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
    }
    catch (Exception ex)
    {
        if (ex.InnerException.GetType() == typeof(Win32Exception))
        {
            Win32Exception wex = (Win32Exception)ex.InnerException;
            Console.WriteLine("Error(0x{0:X}): Service not installed!", wex.ErrorCode);
            return wex.ErrorCode;
        }
        else
        {
            Console.WriteLine(ex.ToString());
            return -1;
        }
    }

    return 0;
}

1
কৌতূহলের বাইরে, স্ব-ইনস্টলেশন / আন-ইনস্টল পরিষেবাটি লাভ কী? যদি পরিষেবাটি নিজেই ইনস্টল হয় তবে পরিষেবাটি প্রথমে কীভাবে শুরু করবেন যাতে এটি প্রথম স্থানে ইনস্টল করা যায়? পরিষেবাটি ইনস্টল না করে শুরু করার জন্য যদি কোনও ব্যবস্থা থাকে তবে কেন এটি ইনস্টল করতে মোটেই বিরক্ত করবেন না?
কিলি ন্যারো

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

4
আপনি যখন এটি একটি প্রোডাকশন মেশিনে ইনস্টল করেন, প্রশাসক হিসাবে এটি চালাতে ভুলবেন না। আমি একটি BAT ফাইল তৈরি করেছি যা / i প্যারামিটারের সাথে EXE ফাইলকে কল করে তবে এটি উত্পাদন পরিবেশে কাজ করে না, যদিও আমি প্রশাসক হিসাবে বিএটি ফাইলটি কার্যকর করেছিলাম। প্রশাসক হিসাবে আমাকে একটি কমান্ড লাইন প্রম্পট খুলতে হয়েছিল এবং স্পষ্টভাবে (BAT ফাইলটি ব্যবহার না করে) EXE ফাইল / i তে আবেদন করতে হয়েছিল। কমপক্ষে একটি উইন্ডোজ সার্ভারে আমার সাথে এটি হয়েছিল 2012
ফ্রান্সিসকো গোল্ডেনস্টাইন

1
আরআর: কমান্ড লাইনে কোনও আউটপুট নেই। ভিএস 2017 সম্প্রদায়টি ব্যবহার করে আমার নতুন পরিষেবা প্রকল্প আউটপুট ধরণের: Windows Applicationএবং স্টার্টআপ অবজেক্ট: এ ডিফল্ট হয়েছে (none)। আমাকে আউটপুট টাইপটি পরিবর্তন করতে হয়েছিল Console Applicationএবং আমার স্টার্টআপ অবজেক্টটি সেট করতে হয়েছিল myservice.Program। আমি অজানা সম্পর্কে র্যামফিকেশনগুলি যদি থাকতে পারে তবে দয়া করে পরামর্শ দিন।
জোনাথন

1
উদাহরণ কোডটিতে টাইপস রয়েছে? তিনটি পার্থক্য পরিষেবা কেন রয়েছে (সিএসমেজেজ কিউইউ সার্ভিস, মাই সার্ভিস, মাইকিউয়ে সার্ভিস)?
নীলস

27

না ক্যালসি, না ব্রেন্ডন সমাধানগুলি ভিজ্যুয়াল স্টুডিও 2015 সম্প্রদায়ে আমার পক্ষে কাজ করে না।

ইনস্টলার দিয়ে কীভাবে পরিষেবা তৈরি করবেন তা আমার এখানে সংক্ষিপ্ত পদক্ষেপ:

  1. ভিজ্যুয়াল স্টুডিও চালান, যান File->New->Project
  2. 'ইনস্টলড টেম্পলেটগুলি অনুসন্ধান করুন' টাইপ 'পরিষেবা' তে নেট ফ্রেমওয়ার্ক 4 নির্বাচন করুন
  3. 'উইন্ডোজ পরিষেবা' নির্বাচন করুন। নাম এবং অবস্থান টাইপ করুন। টিপুন OK
  4. সার্ভিস 1 সিএসে ডাবল ক্লিক করুন, ডিজাইনারটিতে ডান ক্লিক করুন এবং 'ইনস্টলার ইনস্টল করুন' নির্বাচন করুন
  5. প্রজেক্টইনস্টলার.সিগুলিতে ডাবল ক্লিক করুন। পরিষেবাদিপ্রসেসআইনস্টলার 1 এর জন্য প্রোপার্টি ট্যাব খুলুন এবং 'অ্যাকাউন্ট' এর সম্পত্তি মানটি 'লোকাল সার্ভিস' তে পরিবর্তন করুন। পরিষেবাদি ইনস্টলার 1 এর জন্য 'সার্ভিসনাম' পরিবর্তন করুন এবং 'স্টার্টটাইপ' সেট করুন 'স্বয়ংক্রিয়' তে।
  6. ডাবল ক্লিক পরিষেবা ইনস্টলার 1। ভিজ্যুয়াল স্টুডিও serviceInstaller1_AfterInstallইভেন্ট তৈরি করে । কোড লিখুন:

    private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
    {
        using (System.ServiceProcess.ServiceController sc = new 
        System.ServiceProcess.ServiceController(serviceInstaller1.ServiceName))
        {
            sc.Start();
        }
    }
  7. সমাধান তৈরি করুন। প্রকল্পে ডান ক্লিক করুন এবং 'ফাইল এক্সপ্লোরারে ফোল্ডার খুলুন' নির্বাচন করুন। বিন \ ডিবাগ এ যান ।

  8. নীচের স্ক্রিপ্ট সহ ইনস্টল.বাট তৈরি করুন:

    :::::::::::::::::::::::::::::::::::::::::
    :: Automatically check & get admin rights
    :::::::::::::::::::::::::::::::::::::::::
    @echo off
    CLS 
    ECHO.
    ECHO =============================
    ECHO Running Admin shell
    ECHO =============================
    
    :checkPrivileges 
    NET FILE 1>NUL 2>NUL
    if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 
    
    :getPrivileges 
    if '%1'=='ELEV' (shift & goto gotPrivileges)  
    ECHO. 
    ECHO **************************************
    ECHO Invoking UAC for Privilege Escalation 
    ECHO **************************************
    
    setlocal DisableDelayedExpansion
    set "batchPath=%~0"
    setlocal EnableDelayedExpansion
    ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
    ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
    "%temp%\OEgetPrivileges.vbs" 
    exit /B 
    
    :gotPrivileges 
    ::::::::::::::::::::::::::::
    :START
    ::::::::::::::::::::::::::::
    setlocal & pushd .
    
    cd /d %~dp0
    %windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil /i "WindowsService1.exe"
    pause
  9. ফাইল uninstall.bat তৈরি করুন (কলম-ult লাইন পরিবর্তন /iকরতে /u)
  10. ইনস্টল করুন এবং পরিষেবা চালনা ইনস্টল করুন

14

ভিএস2017 এর জন্য আপনাকে "মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 2017 ইনস্টলার প্রকল্পগুলি" ভিএস এক্সটেনশন যুক্ত করতে হবে। এটি আপনাকে অতিরিক্ত ভিজ্যুয়াল স্টুডিও ইনস্টলার প্রকল্পের টেম্পলেট দেবে। https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2017InstallerProjects#overview

উইন্ডোজ পরিষেবাটি ইনস্টল করতে আপনি একটি নতুন সেটআপ উইজার্ড টাইপ প্রকল্প যুক্ত করতে পারেন এবং কেলসির উত্তর https://stackoverflow.com/a/9021107/1040040 থেকে প্রাপ্ত পদক্ষেপগুলি অনুসরণ করতে পারেন


1

উইন্ডোজ ইনস্টলার সম্প্রদায় দ্বারা ইনস্টলটল ক্লাসগুলি (সার্ভিস ইনস্টলার) একটি অ্যান্টি-প্যাটার্ন হিসাবে বিবেচিত হয়। এটি একটি ভঙ্গুর, প্রক্রিয়াধীন নয়, চাকাটির পুনর্নবীকরণ যা উইন্ডোজ ইনস্টলার দ্বারা পরিষেবাগুলির জন্য অন্তর্নির্মিত সমর্থন রয়েছে এই সত্যটিকে উপেক্ষা করে।

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

উইন্ডোজ ইনস্টলার এক্সএমএল - উইন্ডোজ পরিষেবাদি ব্যবহার করে ইনস্টলশিল্ড অগমেন্টিং

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

ইসউইক্স উইন্ডোজ পরিষেবা ভিডিও


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

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