我有一個默認安裝的設置,但它依賴於dot net framework 4.5,所以我如何創建 一個安裝程序,該安裝程序也默默安裝依賴項。默默安裝Dot net 4.5作爲adependency
Setup is created in Install Shield and it is a wpf application
我有一個默認安裝的設置,但它依賴於dot net framework 4.5,所以我如何創建 一個安裝程序,該安裝程序也默默安裝依賴項。默默安裝Dot net 4.5作爲adependency
Setup is created in Install Shield and it is a wpf application
這是你的需要,只要改變下載路徑我找到它與註冊表如果silverlight安裝或不它它會檢查你可以做與.net框架相同,如果它不存在自動下載並通過臨時file.Download in溫度和從溫度安裝:)
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();
}
}
}
}
很確定你需要管理員權限來安裝框架,你有沒有安裝你的應用程序? –
如果我的應用程序我得到它,我想知道,如果有任何方法默默安裝框架。是的,我獲得了管理員權限。 –
而且我無法將框架exe與我的應用程序捆綁在一起,因爲我的設置大小僅爲4 mb,框架大小几乎爲50 mb。 –