2010-02-12 136 views
50

我在Visual Studio 2008上創建了一個應用程序(C#,Windows Forms),現在我想讓這個應用程序的安裝程序。如何才能做到這一點?如何爲我的C#應用​​程序製作安裝程序?

我想我的安裝程序

  • 複製所有文件,我的 應用程序使用用戶 選擇的道路(將文件複製到 選擇的,一些服務器端應用程序和 一些爲客戶端)。
  • 還要安裝.NET 3.5
  • 檢查SQL ServerSQL Server Express Edition

我該怎麼辦呢?

回答

59
  1. 將新的安裝項目添加到您的解決方案中。
  2. 添加您想要安裝的所有項目的目標。
  3. 配置預先需求並選擇「檢查.NET 3.5和SQL Express」選項。選擇必須安裝缺少組件的位置。
  4. 配置您的安裝程序設置 - 公司名稱,版本,版權等
  5. 建立並去!
+0

這會允許MSI功能嗎?聽起來像是需要 - 「複製選擇的文件...」也許你可以逃脫2個不同的安裝程序?但如果安裝項目不提供功能,請使用wix。 – si618 2010-02-12 10:34:34

+0

如果您需要一些特定的安裝邏輯,您可以編寫一些代碼(並添加您自己的表單),以完成您需要的工作。 – sashaeve 2010-02-12 10:51:51

+0

「添加您想要安裝的所有項目的目標。」 怎麼..我不知道它的任何東西... – Moon 2010-02-12 10:54:38

11

一般來說,建議在Windows上使用基於MSI的安裝。因此,如果您準備投入相當一段時間,WiX就是要走的路。

如果你想要更簡單的東西,請使用InnoSetup

8

有幾種方法,其中兩種如下。提供自定義安裝程序或安裝項目。

下面是如何創建一個自定義安裝

[RunInstaller(true)] 
public class MyInstaller : Installer 
{ 
    public HelloInstaller() 
     : base() 
    { 
    } 

    public override void Commit(IDictionary mySavedState) 
    { 
     base.Commit(mySavedState); 
     System.IO.File.CreateText("Commit.txt"); 
    } 

    public override void Install(IDictionary stateSaver) 
    { 
     base.Install(stateSaver); 
     System.IO.File.CreateText("Install.txt"); 
    } 

    public override void Uninstall(IDictionary savedState) 
    { 
     base.Uninstall(savedState); 
     File.Delete("Commit.txt"); 
     File.Delete("Install.txt"); 
    } 

    public override void Rollback(IDictionary savedState) 
    { 
     base.Rollback(savedState); 
     File.Delete("Install.txt"); 
    } 
} 

要添加一個安裝項目

  • 菜單文件 - > - >項目 - - >其他項目類型 - 項目>設置 和部署

  • 設置屬性,在屬性窗口

文章How to create a Setup package by using Visual Studio .NET提供細節。

+0

當.NET 3.5將被安裝在你的運行版中時,你期望運行這段代碼 – Moon 2010-02-12 10:46:59

+0

@Moon你可以在程序描述中說它需要.NET XY – WiiMaxx 2014-08-06 12:33:11

3

爲什麼自己發明輪子,而有一輛車爲你準備好?我只是發現這個工具使用起來非常簡單直觀:高級安裝程序。這one minute video應該足以讓你印象深刻。這裏是illustrative user guide

相關問題