安裝部屬全攻略之─如何製作安裝檔

在我們寫完了漂漂的程式之後要交到使用者手上,總不能直接把xxxx.exe給使用者吧,這個時候我們需要製作安裝檔來交給使用者安裝,那怎麼做呢?嗯,下面我們用圖說方式來說明


  • 加入安裝部屬專案
    在VS IDE環境中的功能表選取[檔案]→[加入]→[新增專案],之後選擇[其他專案類型]→[安裝部屬專案],像下面的圖

  • 加入專案輸出以及相關檔案
    加入新的專案之後,如果依照預設值沒有變動東西的話,現在應該在[方案總管]中會看到新的專案"Setup1",在左邊我們會看到[目標電腦上的檔案系統],下面預設會有3個項目,[使用者的桌面]、[使用者的程式功能表]、[應用程式資料夾],這三個就是模擬成目標電腦上的相關位置,簡單的說如果安裝完後要再使用者的電腦桌面上加入捷徑之類的東西,那我們就要把東西放在[使用者的桌面];如果要在"開始功能表"裡面加入項目那就要在[使用者的程式功能表]裡面加入東西;[應用程式資料夾]就是對應到PROGRAMFILE,也就是程式安裝之後產生的資料夾嚕~ ;好,我們先來加入最重要的exe檔(執行檔)吧。
    首先點一下左邊烈表的[應用程式資料夾],在右邊的空白處按下滑鼠右鍵會出現下圖的快顯功能表

    點選[加入]→[專案輸出],之後會看到多了一個[主要輸出從XXXX(作用中)]的項目,這就是我們的執行檔嚕~畫面上因為我的測試專案很簡單,所以只有一個專案輸出,如果你的專案有參考其他的東西(比如說有用到ReportViewer)相關的dll也會自動的幫你加入;另外如果你的專案有用到其他檔案(比如說mdb檔)或是要建立資料夾的話在這邊也要一一手動加入喔~這個部分vs2005是不會幫你自動建立的喔。
  • 設定相關屬性
    執行檔作好了,再來,安裝的時候VS怎麼知道要幫我裝到甚麼目錄裡面呢?嗯,問的好!我們就來設定一下相關設定;首先我們先了解一下,VS2005是怎麼去抓相關設定的,照下面這張圖

    我們可以看到[應用程式資料夾]它的DefaultLocation屬性是設定成下面這樣
    [ProgramFilesFolder][Manufacturer]\[ProductName]
    上面這3個項目就會對應到某一個屬性設定,首先[ProgramFilesFolder]就是對應到使用者電腦的"Program Files"資料夾了,而[Manufacturer]跟[ProductName]要在哪裡設定呢?點一下方案總管的"Setup1"(就是安裝專案的專案名稱),之後看屬性這個地方,像下圖

    就會看到[Manufacturer]的屬性可以設定了,再往下一點就會看到[ProductName]可以設定,這邊有一些相關屬性我們可以一起設定進去例如[Author]是設定作者名稱(嘿嘿,沒有這個怎麼型行,當然要把大名打上去嚕~),[Title]可以設定安裝程式在安裝的時候顯示的標題名稱,其他的就讓各位去試試看嚕~這邊我把[Manufacturer]設定為MyCorp,[ProductName]設定為TestPorg,[Title]設定為Setup1,方便後續說明。
  • 建置封包檔
    好啦~總算來到這一步了,在方案總管中我們的安裝專案上面按右鍵,選取[建置];等到完成之後就會在debug目錄下看到產生了兩個檔案,"setup.exe"、"setup.msi",這就是我們所需要的安裝檔了。
  • 測試
    點下安裝檔(setup.exe),之後就會出現安裝畫面,像下面這樣

    嘿嘿,產品名稱([ProductName])真的有出來喔,之後下一步,這裡就會出現安裝目錄的路徑啦,是不是跟你的設定一置呢,之後就是下一步,下一步.....;如此就完成了我們的安裝檔了,好了今天就先到這裡吧~如何在桌面上以及功能表上面加入項目下一次再來說明,有興趣的朋友也可以自行測試看看喔。

留言

程式新手表示…
請問,你說之後要說明如何在桌面上以及功能表上面加入項目
我找不到你有發相關的文章
可以請教你該怎麼做嗎 ?
bauann寫道…
To 程式新手
抱歉,後來因為懶沒做更新,找時間再來做一下。
其實你只要先建立"專案輸出"的捷徑之後,在對應的"特殊資料夾",像是功能表的目錄裡面加進去就行了,可以先玩玩看。
匿名表示…
請問為什麼我在我打好的專案中

選取[檔案]→[加入]→[新增專案]

並沒有像您一樣左邊還有一堆標籤可以選

我的就只有這樣(網址)

http://img689.imageshack.us/img689/3060/64456786.jpg
LSK表示…
我在我打好的專案中

照你說的選取[檔案]→[加入]→[新增專案]

不過並沒有看到像你一樣左邊有這麼多標籤

我的就只有簡單的幾個

如圖(網址)
http://img689.imageshack.us/img689/3060/64456786.jpg
bauann寫道…
To LSK
您的Visual Studio是甚麼版本的呢?如果是Express的版本就沒有這個專案類型了
匿名表示…
假如用戶並無安裝所需要的.net framework,請問安裝檔還可以運行嗎?
bauann寫道…
Hi,
安裝檔做出來之後,你會看到有一個Setup.exe跟一個xxxx.msi;setup.exe的用途就是會幫你偵測必要條件,例如.net framework或是你設定的其餘必要條件是否已經有安裝,而msi是主要是安裝應用程式相關。
匿名表示…
請問一下步驟照您說的做出了.EXE和.MSI檔,但我建的空資料夾卻都沒有封進去,只有有檔案的資料夾會被封進去而已,請問這應該如何解決呢?
另外我們教使用者下載安裝時,是.EXE和.MSI這二個檔都要給嗎?還是只需要給.MSI即可?
如果二個都要給,那麼是二個都需要點選並安裝嗎?
bauann寫道…
Hi, 空資料夾的部分如您所說,是因為裡面沒有檔案的關係,這部分您可以在程式裡面加入相關的判斷,資料不存在便去建立它。
而封裝產生之後的兩個檔案,setup.exe與xxxx.msi主要的分別是msi檔案是你的應用程式,而setup.exe是用來檢查"必要條件"等等的動作;比如說,從setup.exe開始執行,就會檢查是否有安裝.net framework等,如果沒有安裝會引導到安裝頁面;而如果直接用msi執行,就只會安裝應用程式,這時候如果沒有.net framework就會顯示錯誤,然後結束安裝。您可以依照實際需求去考量,如果確定一些應用程式需要的東西都有安裝好的話,那就可以直接由msi執行。
Amanda寫道…
請問一下,我有按照你說的先建立"專案輸出"的捷徑之後,在對應的"特殊資料夾",像是功能表的目錄裡面加進去,我加進去後,程式建置時會出錯無法建置成功的問題,請問您有遇過這樣的錯誤嗎?謝謝!
Amanda寫道…
請問我的按照你說的:「先建立"專案輸出"的捷徑之後,在對應的"特殊資料夾",像是功能表的目錄裡面加進去」此方法建置時會發生不成功,但又沒有錯誤,安裝程式時也不會出現在我加入的使用者的程式功能表中,請問您有遇過此種錯誤嗎?謝謝!
bauann寫道…
Hi, Amanda
有出現甚麼錯誤訊息嗎?我有用過功能表、字形的部分,是沒有錯誤產生哩
Ba表示…
想請問您,如果要判斷欲安裝的電腦是否有安裝某軟體了。
我在[啟動條件]中[目標電腦上的需求]右鍵新增[加入Windows Installer啟動條件],會出現[搜尋目標電腦]和[啟動條件]
我比較不懂的是,[搜尋目標電腦]中[搜尋元件]的地方要輸入ComponentId,是規定GUID格式,想請問您要怎麼找出一個軟體的GUID?謝謝
bauann寫道…
Hi, Ba
在專案的屬性視窗裡面,在組件資訊中,就會看到 GUID的項目了,您可以確認看看 :)
Ba表示…
Hi 您說的是ProductCode吧?
我是想找出隨便一個軟體的GUID,後來我用[搜尋目標電腦]的[檔案搜尋]解決這個問題了!謝謝:D

這個網誌中的熱門文章

開啟cshtml檔案時,出現『並未將物件參考設定為物件執行個體』的錯誤訊息

無法設定中斷點 尚未載入符號檔

DataGridView欄位計算總合