0

我試圖使用Windows安裝程序的應用程序,因爲它的安裝方法。當安裝成功時,我想要獲取主要輸出所在的路徑,這是我在安裝程序中配置的。在我的情況下,主輸出位於文件夾[ApplicationData(Installroot)]\Bin\C#安裝項目自定義操作將安裝目錄保存到自定義設置文件

我還有一個名爲App.Settings的自定義設置文件,位於我的類庫中,它控制幾個設置,如文件位置相對於安裝位置。

所以這個想法是,當安裝成功時,它應該調用App.Settings並將安裝文件夾保存到設置文件。

我已經做了一個Install類並把它放在類庫中。我不確定它是否應該在該項目中。 這是安裝類的代碼:

using System.Collections; 
using System.ComponentModel; 

namespace WaspbaneModels 
{ 
    [RunInstaller(true)] 
    public partial class Installer : System.Configuration.Install.Installer 
    { 
     public Installer() 
     { 
      InitializeComponent(); 
     } 

     public override void Install(IDictionary stateSaver) 
     { 
      base.Install(stateSaver); 
     } 

     public override void Commit(IDictionary savedState) 
     { 
      base.Commit(savedState); 

      SettingsControl.BaseURL = Context.Parameters["assemblypath"]; 
      SettingsControl.Save(); 
     } 

     public override void Rollback(IDictionary savedState) 
     { 
      base.Rollback(savedState); 
     } 

     public override void Uninstall(IDictionary savedState) 
     { 
      base.Uninstall(savedState); 
     } 
    } 
} 

在此代碼SettingsControl是負責設置的簡單地用一些性質的類。我使用這個類,以便我的Windows窗體項目也可以訪問這些設置。

在自定義操作選項卡中,我還將主輸出添加到所有內容。我也不確定這是否正確,因爲我認爲主要輸出包含所有.dll文件,包括類庫。

我不確定從哪裏繼續,但是因爲設置沒有保存。我只需在應用程序啓動時添加一個消息框,就可以檢查該設置的價值。

任何對該項目的更多數據感興趣的人都會問。我只是不會立即發佈所有內容。

編輯:

一些更多的測試後,我設法找到了該安裝程序類沒有被要求。我添加了一些當方法被調用但是什麼也沒有發生時寫入文件的東西。

因此,我現在的問題是:如何正確地將自定義操作添加到安裝項目?

回答

1

設置範例不適用於安裝程序類,因爲您不在正在運行的應用程序上下文中。您正在通過系統帳戶運行的msiexec.exe進程的反射來調用,而沒有任何工作目錄上下文。人們通常直接在設置文件上使用Xml處理來解決此問題。您需要命名設置文件的完整路徑,因爲您再次從msiexec.exe進程作爲回調運行。

自定義操作不需要是提交自定義操作,因爲所有VS自定義操作都在所有文件安裝後運行。唯一需要提交定製的時間是當您運行代碼時,它對依賴於文件的代碼被安裝到WinSxS上的GAC中,因爲它們在提交時間之前無法訪問。

+0

所以,如果我得到它的權利,提交後,找到設置文件,並直接編輯它? – Thodor12

+0

我偶然發現了這個:http://stackoverflow.com/questions/2943438/visual-studio-2008-installer-custom-action-breakpoint-not-firing。 VS2015也是如此嗎?如果是這種情況,那麼我知道我的代碼爲什麼不起作用。 – Thodor12

+0

基於你的問題,這似乎不相關,因爲它涉及調試和缺少base.Install()。 – PhilDW

1

您可以將自定義操作類(.dll)添加到安裝項目中。您必須將安裝程序 .dll添加到安裝和提交操作。

enter image description here

要添加自定義操作

  1. 選擇Solution Explorer中的安裝程序安裝項目。在 查看菜單上,指向編輯器,然後單擊自定義操作。將顯示 自定義操作編輯器。
  2. 在自定義動作編輯器中,選擇提交節點。在動作 菜單上,單擊添加自定義操作。
  3. 在「在項目中選擇項目」對話框中,雙擊「 應用程序文件夾」。從選擇主要輸出安裝程序 項目。來自InstallerActions的主要輸出顯示在自定義動作編輯器中的 提交節點下。
  4. 在「屬性」窗口中,確保InstallerClass屬性 設置爲True(這是默認設置)。
  5. 在自定義操作編輯器,選擇安裝節點,並從InstallerActions添加 主輸出該節點爲你做的 提交節點。
+0

您應該在答案中提供更多詳細信息,因爲外部鏈接可能隨時間而中斷。 –