2009-11-30 60 views
1

我得到關於威克斯問題和管理的自定義操作:我已經設法它來創建一個託管自定義操作,得到它從我的安裝程序調用(在安裝日誌文件來確認它)。我的問題是現在我沒有管理它將數據傳遞給自定義操作。 Afaik如果我選擇在這樣的後期階段運行自定義操作,我必須將操作標記爲「延遲」。有了這個限制,它只能訪問CustomActionData屬性嗎?爲什麼這在我的情況下不起作用? (至於我可以看到我從樣品正確adoptet一切?)維克斯:將數據傳遞到託管自定義操作不起作用

這裏是我已經嘗試過:

自定義操作:

public class CustomActions 
    { 
     [CustomAction] 
     public static ActionResult RegisterDflHelp(Session session) 
     { 
     session.Log("Begin CustomAction1"); 

     session.Log("Before Access to customactiondata"); 
     //string helpdir = session["HELP_DIR"]; 
     string cad = session["CustomActionData"]; 
     Debugger.Break(); 
     session.Log("Help dir is: " + helpdir); 
     session.Log("Custom Action Data is: " + cad); 
     return ActionResult.Success; 
     } 

}

合併模塊這就要求自定義動作:

<CustomAction Id='RegisterDflHelp' BinaryKey='RegisterDflHelpDll' DllEntry='RegisterDflHelp' Execute='deferred' /> 

<CustomAction Id="HELP_DIR.SetProperty" Return="check" Property="HELP_DIR" Value="Teeest" /> 

<Property Id='HELP_DIR' Secure='yes'/> 

<InstallExecuteSequence> 
    <Custom Action='HELP_DIR.SetProperty' After='InstallFiles' /> 
    <Custom Action='RegisterDflHelp' After='HELP_DIR.SetProperty' /> 
</InstallExecuteSequence> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    </Directory> 
<ComponentGroupRef Id="HelpGroup"/> 

產品,其中包括幫助,合併模塊:

<Product....> 
<Package....> 
... 
<Directory> 
<!--Directory which gets the help folder--!> 
<Merge Id ="DflHelpInstaller" SourceFile="DflHelpInstaller.msm" Language="1033" DiskId="1" /> 

任何人的想法?提前致謝!!

丹尼爾

順便說一句:什麼也很想知道:在哪個階段,在installationprocess必須標明的行動推遲?如果我在本階段之前設法調用我的自定義操作。有什麼優勢?

回答

1

somethimes使用你的腦袋真的幫助;-)

爲什麼樣品上方不工作的原因很簡單:

相反的:

CustomAction Id="HELP_DIR.SetProperty" Return="check" Property="HELP_DIR" Value="Teeest" /> 

我頭上來設置屬性應該獲取自定義數據的Action屬性!在這裏:

<CustomAction Id="HELP_DIR.SetProperty" Return="check" Property="RegisterDflHelp" Value="$(var.HelpSourceDir)" /> 

希望幫助別人救我花來解決這個問題很傻;-)

2

你還在設置HELP_DIR屬性,而不是自定義操作數據的時間。如果您嘗試將RegisterDfHelp操作的CustomActionData設置爲「Teeest」,那麼我認爲您應該這樣做:

<CustomAction Id="SetRegisterDflHelpCustomActionData" Return="check" 
    Property="RegisterDflHelp" Value="Teeest" /> 

<InstallExecuteSequence> 
    <Custom Action='SetRegisterDflHelpCustomActionData' After='InstallFiles' /> 
    <Custom Action='RegisterDflHelp' After='SetRegisterDflHelpCustomActionData' /> 
</InstallExecuteSequence> 
相關問題