2011-03-06 94 views
0

請把你的想法:幫助中的自定義操作安裝項目

在一個解決方案文件,我有兩個項目PROJECTA和安裝項目。創建PROJECTA安裝程序後,安裝程序「example.msi」包含PROJECTA的PROJECTA.exe(或活動輸出 )。

安裝「example.msi」時,我想在後臺運行PROJECTA.exe。

我嘗試定製控制能力,並安裝程序類

如果被賦予了exe文件的路徑(如下圖所示),它工作正常。但這不是預期的行爲,我希望在安裝前將example.msi中的PROJECTA.exe複製到該位置,以便在安裝過程中從那裏運行。

這是如何實現的。

C#語法:

[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)

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

    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] 
    public override void Commit(IDictionary savedState) 
    { 
     base.Commit(savedState); 
     string s="C:\\xxx\\PROJECTA.exe"; 
     System.Diagnostics.Process.Start(s); 

    } 

預先感謝您。

+0

這沒有意義,也不是推薦的方法。如果您的應用程序需要某些功能,則正確的方法是在自定義操作(EXE或DLL)中移動該功能。通過這種方式,自定義操作在安裝過程中使用,並僅執行安裝操作,而您的應用程序安裝在目標機器上,並用作應用程序。 – 2011-03-07 07:41:44

回答

0

使PRO​​JECTA.exe成爲MSI安裝,然後將其添加到您的二進制表。然後創建一個類型50的CustomAction,如果它將在UI序列中完成,或者如果將要在exec序列中輸入7,則創建類型爲50的CustomAction。您無法在.NET CA中執行此操作,因爲您只允許一次運行1個MSI安裝程序實例。通過運行嵌套安裝程序,您基本上共享相同的MSI安裝程序引擎實例

說完所有這些之後,嵌套安裝程序可能會很痛苦,如果可以幫助它,應該避免。

相關問題