http://www.cnblogs.com/jason_lb/archive/2009/06/24/1509362.html
1.添加項目輸出
在檔案系統編輯器中,如果項目在一個解決方案中,則可以添加項目的主輸出,為自動識別添加產生的exe,config,dll引用等;項目經常還包括一些資源檔,片,xml等,這些設定為內容的話,則可以添加項目的內容檔案;如果還有一些特殊檔案添加,比如第3點說到msiexec.exe檔案,則可以直接瀏覽添加。
2.如何使新產生的安裝包在安裝時自動覆蓋以前安裝過的版本
設定部署項目屬性RemovePreviousVersion為True,並將Version升高,並在產生時提示的“建議在更改版本時更改ProductCode,要進行該操作嗎?”選擇是。
3.如何添加卸載
找到msiexec.exe檔案,一般在windows/system32下,添加到檔案系統中,可以改名為UnInstall.exe,然後設定其捷徑,最好重新命名捷徑並放到程式目錄中,並設定其Arguments屬性值為/x {[ProductCode]},這裡用[ProductCode]可以自動擷取安裝包的ProductCode,網上多數讓你直接拷貝部署項目的ProductCode,但是第2點提到了ProductCode是會變的。(ProductCode變是為了覆蓋安裝,ProductCode不變是為了檢測升級)
4.如何在安裝整個過程中實現自訂動作
首先需要建立一個類庫項目,然後在其中添加安裝程式類,根據需要添加相應的重寫方法
例如要在安裝完成後啟動程式,可以這樣寫
protected override void OnAfterInstall(IDictionary savedState)
{
string appPath = Context.Parameters["targetdir"];
Process.Start(appPath + "XXX.exe");
base.OnAfterInstall(savedState);
}
Context.Parameters["targetdir"]為擷取安裝路徑,需要在部署項目中設定
其次,在部署項目的自訂動作中,把安裝,提交,復原,卸載都添加上面項目的主輸出
設定主輸出的屬性CustomActionData值為/targetdir="[TARGETDIR]\",這樣Context.Parameters["targetdir"]才能擷取到安裝路徑。