2015-01-14 2 views
6

मेरे पास एक सेटअप है जो चुपचाप इंस्टॉल करता है लेकिन इसकी डॉट नेट फ्रेमवर्क 4.5 की निर्भरता है, तो मैं एक इंस्टॉलर कैसे बना सकता हूं जो निर्भरता को चुपचाप इंस्टॉल करता है।विज्ञापन निर्भरता के रूप में चुपचाप डॉट नेट 4.5 इंस्टॉल करें

Setup is created in Install Shield and it is a wpf application 
+0

निश्चित रूप से आपको ढांचे को स्थापित करने के लिए व्यवस्थापक पहुंच की आवश्यकता है, क्या आपको पहले से ही अपना ऐप इंस्टॉल करने के लिए मिला है? –

+0

मेरे आवेदन के मामले में मुझे यह मिलता है, मैं जानना चाहता हूं कि अगर फ्रेमवर्क को चुपचाप स्थापित करने का कोई तरीका है। और हाँ मुझे व्यवस्थापक के लिए अनुमति मिली है। –

+0

और मैं अपने आवेदन के साथ ढांचे को बंडल नहीं कर सकता क्योंकि मेरा सेटअप आकार केवल 4 एमबी है और फ्रेमवर्क आकार लगभग 50 एमबी है। –

उत्तर

5

ऐसा लगता है कि

dotNetFx45_Full_setup.exe /q /norestart 

एक कमांड लाइन का उपयोग करने के फ्रेमवर्क डाउनलोड करने के लिए वेब का उपयोग करें bootstrapper ऑनलाइन

हो सकता है कि एक नज़र here और here

संपादन संभव हो जाना चाहिए: बस देखें कि आप .NET 4.5 सेटअप शामिल नहीं करना चाहते हैं ... संपादित करें: कोड निश्चित

+0

यह आदेश काम नहीं कर रहा है .... –

+0

कमांड संपादित किया गया। –

+0

वास्तव में ऊपर दिए गए कमांड उपयोगी होते हैं जब हम सेटअप करते हैं, लेकिन यदि मैं क्लाइंट साइड –

0

यह आपकी ज़रूरत है, बस डाउनलोड पथ बदलें, अगर मैं चांदी की रोशनी स्थापित करता हूं या नहीं, तो यह जांच करेगा कि आप .NET फ्रेमवर्क के साथ ऐसा कर सकते हैं और यदि यह स्वचालित रूप से मौजूद नहीं है और धीमे ढंग से temp फ़ाइल के माध्यम से स्थापित हो। डाउनलोड करें Temp और temp से स्थापित करें :)

using Microsoft.Win32; 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Diagnostics; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 


namespace ControlPanel 
{ 
    /// <summary> 
    /// Interaction logic for ControlPanelFinal.xaml 
    /// </summary> 
    public partial class ControlPanelFinal : Window 
    { 
     private readonly BackgroundWorker _bw = new BackgroundWorker(); 
     public ControlPanelFinal() 
     { 
      InitializeComponent(); 
      SilverLightInstall(); 
      _bw.DoWork += _bw_DoWork; 
      _bw.RunWorkerCompleted += _bw_RunWorkerCompleted; 
      _bw.ProgressChanged += _bw_ProgressChanged; 
      // _bw.WorkerReportsProgress = true; 
     } 

     void _bw_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      progressbar1.Value = e.ProgressPercentage; 
     } 

     void _bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 
      if ((e.Cancelled == true)) 
      { 
       this.textblock1.Text = "Completed"; 
      } 
      else if (!(e.Error == null)) 
      { 
       this.textblock1.Text = ("Error :" + e.Error.Message); 
      } 
      else 
      { 
       progressbar1.Maximum = 100; 
       progressbar1.Minimum = 1; 
       progressbar1.Value = progressbar1.Maximum; 
       textblock1.Text = "Completed"; 
      } 

     } 

     void _bw_DoWork(object sender, DoWorkEventArgs e) 
     { 
      for (int i = 0; i <= 100; i++) 
      { 
       (sender as BackgroundWorker).ReportProgress(i); 
       Thread.Sleep(100); 

      } 
      string filepath = Path.Combine(Path.GetTempPath(), "Silverlight.exe"); 
      Process p = new Process(); 
      p.StartInfo.FileName = filepath; 
      p.StartInfo.Arguments = string.Format(" /q /i \"{0}\" ALLUSERS=1", filepath); 
      p.StartInfo.Verb = "runas"; 
      p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.StartInfo.UseShellExecute = true; 
      p.Start(); 

     } 
     private void SilverLightInstall() 
     { 
      var Key1 = @"SOFTWARE\Microsoft"; 
      using (var regKey1 = Registry.LocalMachine.OpenSubKey(Key1)) 
      { 
       if (regKey1.GetSubKeyNames().Contains("Silverlight")) 
       { 
        textblock1.Text = "Install"; 
        checkbox1.IsEnabled = false; 
       } 
       else 
       { 
        checkbox1.IsEnabled = true; 
        string filename = Path.Combine(Path.GetTempPath(), "Silverlight.exe"); 
        using (StreamWriter sw = new StreamWriter(filename)) 
        { 
         sw.WriteLine("Error"); 
        } 
        WebClient client = new WebClient(); 
        client.DownloadProgressChanged += client_DownloadProgressChanged; 
        client.DownloadFileCompleted += client_DownloadFileCompleted; 
        client.DownloadFileAsync(new Uri("http://download.microsoft.com/download/F/8/C/F8C0EACB-92D0-4722-9B18-965DD2A681E9/30514.00/Silverlight_x64.exe"), filename); 
       } 
      } 

     } 

     void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) 
     { 
      textblock2.Text = " Download Completed"; 
      btnInstall.IsEnabled = true; 

     } 

     void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
     { 
      btnInstall.IsEnabled = false; 
      double byteIn = double.Parse(e.BytesReceived.ToString()); 
      double totalBytes = double.Parse(e.TotalBytesToReceive.ToString()); 
      double percentage = byteIn/totalBytes * 100; 
      textblock2.Text = "Download " + e.BytesReceived/1024 + " Of " + e.TotalBytesToReceive/1024; 
      progressbar1.Value = int.Parse(Math.Truncate(percentage).ToString()); 
     } 
     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      if (_bw.IsBusy == false) 
      { 
       _bw.RunWorkerAsync(); 
      } 
     } 
    } 
} 
संबंधित मुद्दे