2015-01-14 18 views
6

Tôi có một cài đặt cài đặt âm thầm nhưng nó có phụ thuộc của khung net dot 4.5, vì vậy làm thế nào tôi có thể tạo một trình cài đặt cũng cài đặt phụ thuộc âm thầm.Cài đặt Dot net 4.5 âm thầm như phụ thuộc

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

Chắc chắn bạn cần có quyền truy cập quản trị để cài đặt khung, bạn đã cài đặt ứng dụng chưa? –

+0

Trong trường hợp ứng dụng của tôi tôi nhận được nó, tôi muốn biết rằng nếu có bất kỳ cách nào để cài đặt khung im lặng. Và có tôi đã nhận được sự cho phép cho admin. –

+0

Và tôi không thể gói exe khung với ứng dụng của mình vì kích thước thiết lập của tôi chỉ là 4 mb và kích thước khung là gần 50 mb. –

Trả lời

5

Nó nên có thể sử dụng một dòng lệnh như

dotNetFx45_Full_setup.exe /q /norestart 

Sử dụng bootstrapper web để tải về Khung trực tuyến

Có lẽ có một cái nhìn herehere

Chỉnh sửa: Chỉ cần thấy rằng bạn không muốn bao gồm .net 4.5 thiết lập ... Chỉnh sửa: Mã số cố định

+0

lệnh này không hoạt động .... –

+0

Lệnh đã chỉnh sửa. –

+0

thực sự ở trên lệnh rất hữu ích khi chúng tôi có thiết lập, nhưng nếu tôi muốn cài đặt exe trên phía máy khách –

0

Đây là nhu cầu của bạn, Chỉ cần thay đổi đường dẫn tải xuống tôi tìm thấy nó với đăng ký nếu cài đặt Silverlight hay không nó sẽ kiểm tra u có thể làm tương tự với .net framework và nếu nó không tồn tại tự động tải xuống và sliently cài đặt thông qua tập tin temp.Tải xuống Nhiệt độ và cài đặt từ 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(); 
      } 
     } 
    } 
} 
Các vấn đề liên quan