2013-02-26 29 views
1

我需要創建一個新的事件源,以便我的辦公室外接程序可以將事件記錄到事件日誌中。這需要管理員權限,所以我需要在安裝時執行此操作。 MSDN文檔說:在安裝組件時>不明白RunInstaller屬性

如果從Installer繼承一個類被標有RunInstallerAttribute設置>真,Visual Studio的自定義操作安裝程序或InstallUtil.exe將被調用。

現在我正在使用標準的Visual Studio Outlook 2007項目,我相信它會創建一個ClickOnce setup.exe文件,該文件可用於安裝我的加載項。所以我需要做的是在我的加載項目中包含MyEventLogInstaller類(如下所示),setup.exe會檢測它並安裝日誌源?我的setup.exe是否檢測到RunInstaller屬性並使用「自定義操作安裝程序」?我理解代碼(下面),但我不明白的是安裝程序如何知道在派生的MyEventLogInstaller上實際調用Install方法?

[RunInstaller(true)] 
public class MyEventLogInstaller: Installer 
{ 
    private EventLogInstaller myEventLogInstaller; 

    public MyEventLogInstaller() 
    { 
    myEventLogInstaller = new EventLogInstaller(); 
    myEventLogInstaller.Source = "Source1"; 
    myEventLogInstaller.Log = "Log1"; 

    Installers.Add(myEventLogInstaller); 
    } 
} 

回答

0

明白了(我認爲)!

我所做的就是創建一個新的安裝項目在Visual Studio 2010年我加入一個新的控制檯應用程序項目的總體解決方案,並加入我的MyEventLogInstaller類的控制檯應用程序項目。在控制檯應用程序的主要方法中,我實例化MyEventLogInstaller並添加一些額外的代碼以寫入新的事件源。然後,我右鍵單擊安裝項目 - >添加 - >程序集...並選擇控制檯應用程序可執行文件,將其添加到安裝項目中(我是新安裝項目,我期待更直觀的東西,但我離題了)。

現在,最後一步(並感謝Why won't my Setup Project Perform my Custom Registration Process自定義操作位)是右鍵單擊安裝項目,選擇查看 - >自定義操作,右鍵單擊頂級自定義操作 - >添加自定義操作。 ..,然後用安裝程序選擇程序集(在我的情況下是Console Application.exe)

完成所有這些工作後,非管理員帳戶並運行控制檯應用程序,它現在可以登錄到新創建的源!呼。

+0

最後一塊什麼,我會嘗試是引導mainifest發生器和使用我的.msi生成輸出,然後希望我可以將它作爲在ClickOnce的一個先決條件 – 2013-02-27 22:40:34