# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > Setup و Deployment >  نحوه ی ساختن فایل  setup ی که قابلیت uninstall شدن داشته باشد

## AmirAlimadadi

با سلام به همه
می دونم که سوالم شاید تکراری به نظر برسه، ولی من هر چی تو سایت گشتم به جواب مورد نظرم نرسیدم.
من یه پروژه نوشتم که می خوام set up سازی براش کنم، همراه این پروژه من باید .net framework هم بره.
ممنون می شم اگه کمکم کنین

----------


## niloofar norouzi

> با سلام به همه
> می دونم که سوالم شاید تکراری به نظر برسه، ولی من هر چی تو سایت گشتم به جواب مورد نظرم نرسیدم.
> من یه پروژه نوشتم که می خوام set up سازی براش کنم، همراه این پروژه من باید .net framework هم بره.
> ممنون می شم اگه کمکم کنین


 فصل 21 کتاب هاشمیان کامل توضیح داده

----------


## Esmail Solhkhah

سلام دوست عزیز
تو قسمت Property پروژه ستاپی که ساختی دکمه Prerequisites رو بزن
و در پنجره ای که باز میشه رادیو باتن وسطی رو انتخاب کن پروژه رو بیلد کنی میبینی که دات نت هم اضافه شده البته میتونی به غیر دات نت ابزارهای لازمه دیگه رو هم تو همون صفحه انتخاب کنی.
موفق باشی.

----------


## AmirAlimadadi

با تشکر از همه شما دوستان
من تونستم set up رو بسازم، اما یه مشکل وجود داشت.
من می خوام که قسمت uninstall رو هم در منوی start داشته باشم، یعنی اینکه بعد از install کردن، گزینه  uninstall رو هم در all programs سیستم عامل داشته باشم که بشه همون جا uninstall  کرد

----------


## Esmail Solhkhah

سلام دوست عزیز
میتونی از آخرین نسخه Install Shiled استفاده کنی
مشکل فقط اینه که باید سی دی آموزششو بگیری (البته اگه بشه گفت مشکل)

----------


## مهدی رحیم زاده

من توی VS نتونستم این کار رو انجام بدم و فکر هم نمی کنم که به این سادگیا باشه اگه می خوای اونو همداشته باشی از اینستال شیلد استفاده کن . 
موفق باشید .

----------


## ehsan248

توی سایت codeprojet هست  کار سختیه به درد سرش نمی ارزه

----------


## masoud.t123

setup factory رو امتحان کن

----------


## #target

از Tarma ExpertInstall 3.XX یا Tarma Installer 5.XX استفاده کن چون کاملا ساده و جالبه قابلیت ویرایش کامل صفحات رو هم داری البته اگر کرکشو پیدا کنی (کرک هست ولی بعد از ساخت فایل , فایل رو حالت آزمایشی هست) البته خود Visual Studio هم قابلیت ساخت Setup داره .

Tarma Installer قابلیت اینو داره که در All Program هم Uninstall بذاری .

(
اگر که برنامه های دیگه قابلیت ویراش صفحات رو داره اما گزینه نام شرگت سازنده در قسمت سمت چپ پایین غیر قایل تغییره ولی در Tarma Expert Install چنین قابلیتی وجود داره 
)

----------


## ehsan248

سلام
یه نمونه برنامه ساخت Uninstall 
http://www.codeproject.com/KB/instal...Uninstall.aspx

----------


## s_rezaei

سلام.
لطف می کنید مراحل ساخت setupدر vb.net2008 با بانک sql2000 رو برای یک مبتدی شرح بدید؟ ممنون میشم

----------


## mom alone

خوب عزیزان 2 تا تاپیک پایین تر من جوابتون رو داده بودمااااااااااااا

https://barnamenevis.org/showthread.php?t=153190

----------


## AmirAlimadadi

سلام دوستان
اگه بخواهیم که در موقع نصب پروژه یه فولدر در یه جای خاص (مثلا درایو c)، بدون در نظر گرفتن این موضوع که پروژه کجا نصب می شه، کپی بشه چی کار باید بکینم؟؟؟
من می خوام بعد از نصب برنامه ام روی کامپیوتر مقصد(بدون توجه به اینکه کجا نصب می شه)، توی درایو c یه فولدر به همراه تعدادی فایل کپی کنم
ممنون

----------


## Sharif Lotfi

> من می خوام که قسمت uninstall رو هم در منوی start داشته باشم، یعنی اینکه بعد از install کردن، گزینه  uninstall رو هم در all programs سیستم عامل داشته باشم که بشه همون جا uninstall  کرد


اگر با VB.Net كار مي كنين به اين صورت عمل كنين :
در بخش ساخت setup در فولدر user's programs menu  يا هر جاي ديگه اي كه مي خواين يك shortcut جديد اضافه كنين با نام uninstall myProject (يا هر اسمي كه دوست دارين) 
فايلي كه ازش shortcut مي سازين همون primary output هست (همون فايل اجرايي كه از مسير application folder مي ريم) همونطور كه مي بينين اين دقيقا همون فايلي هستش كه براي اجراي برنامه مون ازش استفاده مي كنيم.
روي shortcut جديدي كه ساختين راست كليك كنين و properties رو انتخاب كنين و اين تغييرات رو بدين:
مقدار گزينه Arguments رو برابر /u=[ProductCode] بذارين
نام و توضيحات Description مربوط به uninstall رو به دلخواه خودتون تغيير بدين .

حالادر ماژول Main كد زير رو بنويسين :
        Dim arguments As String() = Environment.GetCommandLineArgs()
        Dim myArgument As String()
        Dim myString As String
        For Each argument As String In arguments
            Dim myChar As Char() = {"="c}
            myArgument = argument.Split(myChar)
            myString = myArgument(0)

            If myString.ToLower() = "/u" Then
                Dim guid As String = myArgument(1)

                Dim path As String = Environment.GetFolderPath(Environment.SpecialFolde  r.System)
                Dim si As ProcessStartInfo
                si = New ProcessStartInfo(path + "\\msiexec.exe", "/i " + guid)
                Dim myProcess As Process
                myProcess = Process.Start(si)
                myProcess.Close()
                Application.Exit()
                End
            End If
        Next

و تمام
موفق و سبز باشي دوست عزيز

----------


## AmirAlimadadi

ممنون از شما دوست عزیز، اما آیا با #C هم همین طوری هست که گفتین

----------


## Sharif Lotfi

بله قربان . در #C هم همين جوريه . روش همينه .
موفق و سبز باشي

----------


## خانم گل

تبدیل کد بالا به C#‎ هم این میشه:
[STAThread]
        static void Main()
        {
            string[] args = Environment.GetCommandLineArgs();
            bool isRunnable = true;
            foreach (string argument in args)
            {
                if (argument.Split("=".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0].ToLower() == "/u")
                {
                    string guid = argument.Split("=".ToCharArray(),StringSplitOption  s.RemoveEmptyEntries)[1];
                    string path = Environment.GetFolderPath(Environment.SpecialFolde  r.System);
                    ProcessStartInfo si=new ProcessStartInfo(path+"\\msiexec.exe","/x "+guid);
                    Process.Start(si);
                    Application.Exit();
                    isRunnable = false;
                }
            }
            if (isRunnable)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(fals  e);
                Application.Run(new myForm());
            }
        }

----------

