2013-02-13 27 views
-1

我在做什麼錯?維克斯:通過性,以自定義操作,已通過SO看,* *仍然沒有工作:(

請,如果你的回答是,我應該使用內置的服務安裝的東西在維克斯,也懶得回答,它不適合我工作得很好,我不想去應用XSLT轉換到我的加熱.wxs文件。

根據我的日誌,它做兩的自定義操作,但InstallAndStartServices告訴我「INSTALLFOLDER」不在session.CustomActionData字典中。

<Binary Id="ServiceInstaller" SourceFile="DeploymentItems\ServiceInstaller.CA.dll" /> 

<CustomAction Id="SetInstallFolderForCA" Property="InstallAndStartServices" Value="INSTALLFOLDER=[INSTALLFOLDER]" Execute="immediate" Return="check" /> 
<CustomAction Id="InstallAndStartServices" BinaryKey="ServiceInstaller" DllEntry="InstallAndStartServices" Execute="immediate" Return="check" /> 

<InstallExecuteSequence> 
    <Custom Action="SetInstallFolderForCA" After="InstallFiles">NOT Installed</Custom> 
    <Custom Action="InstallAndStartServices" After="SetInstallFolderForCA"/> 
</InstallExecuteSequence> 

MSI(78:DC)[15:31:47:745]:PROPERTY CHANGE:增加InstallAndStartServices屬性。它的值是'INSTALLFOLDER = C:\ Program Files \ My Product \'。

MSI(一個或多個)(78:DC)[15:31:47:745]:執行動作:InstallAndStartServices

MSI(一個或多個)(78:DC)[15:31:47:745]:注意:1:2205 2:3:ActionText

Action start 15:31:47:InstallAndStartServices。

開始InstallServices

異常的自定義操作拋出: System.Reflection.TargetInvocationException:異常已通過調用的目標引發異常。 ---> System.Collections.Generic.KeyNotFoundException:給定的鍵不存在於字典中。

在System.Collections.Generic.Dictionary`2.get_Item(TKEY的鍵)

在Microsoft.Deployment.WindowsInstaller.CustomActionData.get_Item(String鍵)

string installFolder = session.CustomActionData["INSTALLFOLDER"]; 
+0

嗯。原來我不得不在CA上執行延期執行。任何人都可以解釋它是如何「推遲」的,以及在「即時」和「延遲」之間發生了什麼? – user1796307 2013-02-13 16:05:27

+0

如果自定義操作正在對系統進行更改,則應該按延遲運行。快速的問題..爲什麼你不使用WIX來安裝和啓動你的服務? – 2013-02-13 16:13:40

+0

附加信息:http://www.symantec.com/connect/blogs/basic-differences-execute-immediate-and-execute-deferred-ca – 2013-02-13 16:27:17

回答

2

參見:

Deployment Tools Foundation (DTF) Managed Custom Actions

注意:爲簡明起見,本博文將假設爲 ,讀者已經對Windows的安裝程序架構和理念有了很深的理解。我不會試圖完全覆蓋MSI的聲明和交易設計目標或 類型的pro和con的不同細節。如果您沒有這方面的知識,我強烈建議您在爲Windows Installer 包編寫自定義操作之前先獲取它。

Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer

摘要:在創建中的InstallShield專業 自定義操作 - Windows安裝版,您有幾個在腳本執行選項可供選擇:

•立即執行

•推遲執行

•Rollbac ķ執行

•提交執行

•延遲執行的系統

語境

這篇文章解釋了這些選項的含義和階段自定義操作在安裝運行中執行他們 如何影響時間。 它還可以幫助您將自定義操作插入用戶界面中的正確位置 或執行順序,以避免錯誤 消息,如「無法編寫腳本記錄。事務未啓動」。

+0

謝謝。我想投票,但我沒有聲望。我似乎也創建了兩個獨立的SO賬戶......不知何故! – user1796307 2013-02-14 11:27:54

相關問題