2012-09-20 73 views
1

我創建了一個簡單的C#自定義操作。使用WiX的InstallInitialize之後的C#自定義操作

[CustomAction] 
public static ActionResult MySimpleAction(Session session) 
{ 
    MessageBox.Show("It works!"); 
    return ActionResult.Success; 
} 

<Binary Id="myAction" 
     SourceFile="MyApp.CA.dll"/> 

<CustomAction Id="myActionId" 
       BinaryKey="myAction" 
       DllEntry="MySimpleAction" 
       Execute="deferred" 
       Return="check" /> 

<InstallExecuteSequence> 
     <Custom Action="myActionId" 
       After="InstallInitialize">CHECKBOXCOPYPROP=1</Custom> 
</InstallExecuteSequence> 

當我運行安裝時出現錯誤2762。

當我運行

<InstallExecuteSequence> 
    <Custom Action="myActionId" 
      Before="InstallFinalize">CHECKBOXCOPYPROP=1</Custom> 
</InstallExecuteSequence> 

我沒有得到這個錯誤。爲什麼我無法在InstallInitialize之後運行?它如何運行?

+1

當InstallInitialize過程中運行,並執行作爲直接的,而不是推遲有什麼區別? –

+0

我需要在安裝文件之前執行我的自定義操作 – kenai

+0

當我將執行更改爲立即我沒有看到錯誤但安裝不成功 – kenai

回答

0

你必須寫:

<CustomAction Id="myActionId" BinaryKey="myAction" DllEntry="MySimpleAction" Execute="immediate" Return="check" /> 

隨着Execute="deferred"將無法​​正常工作。

除此之外,在CusomAction.config它必須寫成:

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" /> 
     <supportedRuntime version="v2.0.50727"/> 
    </startup> 
</configuration> 
相關問題