2008-12-15 55 views
5

我正在爲使用VS 2008的ac#windows項目創建安裝程序。我正在嘗試編寫一個自定義操作,用於從源中複製設置文件存儲在文件服務器(例如\ server \ fileshare \ myappinstaller \ mysetting.xml)中的MSI文件目錄到安裝了我的應用程序的計算機上的目標目錄(例如C:\ Program Files \ My App)。我需要MSI自定義操作,從MSI源代碼目錄中複製文件

設置文件無法添加到安裝程序中,因爲它將包含安裝該應用程序的客戶所獨有的設置。

有沒有人有這樣的自定義操作的代碼(最好是C#或VB.NET)?或者,任何人都知道如何在自定義操作中獲取MSI源位置(例如\ server \ fileshare \ myappinstaller)。

非常感謝

回答

2

我會建議你到XML文件添加到安裝程序的一個組件進行安裝。這將是最簡單的方法,不需要自定義操作。

WiX可能是您的選擇。它允許您在安裝期間使用XmlConfig自定義XML配置文件。

0

通常WindowsInstaller中的自定義操作使用msi表中的某些內容將某些內容放入msi的任何表中。

此外,WindowsInstaller-Team拒絕安裝程序的任何託管擴展,原因在網上隨處可見。

但是,我沒有前一段時間弄清楚的擴展,create managed custom actions爲WindowsInstallers,與WiX可用,即作品還在,但對這項工作的頂部的新的解決方案,真正的擴展維克斯允許管理自定義操作。

1

我做了一個類似的事情,但在MSI文件中發送默認配置,然後使用MST添加自定義配置文件。它更加可靠,因爲對Windows安裝程序來說,所有東西都是「本地的」,我只需要向每個客戶發送一個小的自定義MST。

關於我如何做這個

更多信息可在Simplest solution to replace a tiny file inside an MSI?

5

找到了我已經加入

/InstallerPath = 「[OriginalDatabase]」

來解決這個自定義操作的CustomActionData(在設置項目的Tab自定義操作中)並在自定義操作中使用此代碼讀取該值:

Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary) 
     MyBase.Commit(savedState) 

     Dim directoryOfMSI As String = IO.Path.GetDirectoryName(Context.Parameters("InstallerPath")) 

     'Do your work here 
     '... 

    End Sub 

Ciao! Stefan

相關問題