自制安裝包集成.net framework 4.0


最近自己用wpf寫了一個安裝包,本以為這樣就OK了,可是人家提出,要集成 .net framework 4.0,問題來了,wpf是基於.net framework 4.0,沒有.net framework 4.0怎么運行,

苦苦研究幾天,都沒什么結果,有的人說用C++寫一個,我覺得比較靠譜,可惜C++我只是學了點皮毛,還沒深入,還有用什么飛信框架的,Mono的感覺都不太靠譜,最后突然自己想出了一個辦法,用vs安裝做個外殼,把我的安裝程序包裝在里面,這樣,沒有.net framework的,他會自動提示安裝.net framework,然后再自動運行我的安裝程序,最后我的步驟如下

 

建立一個安裝項目

1.把安裝文件放入應用程序文件夾

2.右擊-視圖-安裝界面 把里面的子界面全部刪除

3.右擊-添加-項目輸出(項目看下面的解釋,主要用於自動啟動自己做的安裝包)

4.右擊-自定義操作-安裝-添加自定義操作-選擇你添加到項目輸出的那個項目

5.右擊-屬性-系統必備-從與我的應用程序想通位置下載系統必備組件

這樣安裝項目就配置好了

接下添加上面說的項目,用於安裝好 .net framework后自動啟動我自己做的安裝包

1.建個類庫項目

2.右擊項目-添加新項-安裝文件類

3.在類中貼入以下代碼

/// <summary>
/// 功能是做安裝項目主項目輸出
/// 實現安裝過程中的一些操作
/// 如:安裝完成后啟動項目
/// </summary>
[RunInstaller(true)]
public partial class Installe : Installer
{
/// <summary>
/// 應用程序入口
/// </summary>
public static void Main()
{
}
/// <summary>
/// 構造函數
/// </summary>
public Installe()
{
InitializeComponent();
}
/// <summary>
/// 重寫安裝完成后函數
/// 實現安裝完成后自動啟動已安裝的程序
/// </summary>
/// <param name="savedState"></param>
protected override void OnAfterInstall(IDictionary savedState)
{

try
{
base.OnAfterInstall(savedState);

Assembly asm = Assembly.GetExecutingAssembly();
string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
System.Diagnostics.Process.Start(path + "\\a.exe");//要執行的程序
}
catch (Exception)
{

}
}
/// <summary>
/// 重寫安裝過程方法
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
/// <summary>
/// 重寫安裝之前方法
/// </summary>
/// <param name="savedState"></param>
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
}
/// <summary>
/// 重寫卸載方法
/// </summary>
/// <param name="savedState"></param>
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
/// <summary>
/// 重寫回滾方法
/// </summary>
/// <param name="savedState"></param>
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
}
}

 

編譯成功后,用上面安裝包說的,添加到安裝包的項目輸出,就OK了。這樣安裝程序只會安裝。net 然后運行我自己的安裝程序,嘿嘿

但是這樣安裝程序,他的外殼也被安裝在計算機了,不過沒事,在你自己的程序卸載的時候,同時把這個外殼程序卸載掉就好了,代碼如下

Process.Start("msiexec", "/uninstall {9FDBD1ED-9792-4FD4-9963-52E5974F05A4} /quiet");

注意:{}里面的是你外殼程序的產品編號,/quiet是靜默卸載的意思,如果去掉,他會提示你是否要卸載此產品

 

這東西看簡單,其實真的還是用了很多自己的時間,轉載的童鞋,記得保留我的連接http://www.cnblogs.com/linyijia/archive/2013/03/06/2945468.html,不做純粹的伸手黨哦!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM