我是否可以使用Orca将自定义操作添加到MSI文件,其中的操作是C#方法?

我是否可以使用Orca将自定义操作添加到MSI文件,其中的操作是C#方法?,c#,windows-installer,custom-action,orca,C#,Windows Installer,Custom Action,Orca,我已经创建了一个MSI文件,但我希望该文件中的特定C#方法用于在InstallExecuteSequence表中的ExecuteAction操作之前发生的自定义操作。我有没有办法更新Orca中的二进制表,以便它引用MSI文件中的特定方法 有关更多信息,我的MSI文件使用三个独立的C#类库项目。我想在自定义操作中使用的方法称为InitialAction,并且位于Initialise项目中名为Initialise.CS的CS文件中。不,您不能。Windows Installer本机不支持托管代码自定

我已经创建了一个MSI文件,但我希望该文件中的特定C#方法用于在
InstallExecuteSequence
表中的
ExecuteAction
操作之前发生的自定义操作。我有没有办法更新Orca中的
二进制
表,以便它引用MSI文件中的特定方法


有关更多信息,我的MSI文件使用三个独立的C#类库项目。我想在自定义操作中使用的方法称为
InitialAction
,并且位于
Initialise
项目中名为
Initialise.CS
的CS文件中。

不,您不能。Windows Installer本机不支持托管代码自定义操作。此处引用的Dll类型:

在具有标准必需入口点签名的Win32 Dll中。托管代码自定义操作通常使用SIMM C++ DLL(VisualStudio)实现,该调用调用托管代码,或调用外部进程(WIX DTF)的C++。如果您使用的是Visual Studio或WiX,则两者都提供对托管代码自定义操作的支持

话虽如此,您的代码做了什么,要求它是直接调用?无论是否支持托管代码,都支持运行外部可执行文件。可执行文件可以调用类库


描述你的最终目标通常很有用。实际上,您已经决定了问题的解决方案是编辑MSI,但没有对实际问题的描述。您似乎希望修改现有MSI以调用代码,但不希望使用可用的工具重新生成代码

不,你不能。Windows Installer本机不支持托管代码自定义操作。此处引用的Dll类型:

在具有标准必需入口点签名的Win32 Dll中。托管代码自定义操作通常使用SIMM C++ DLL(VisualStudio)实现,该调用调用托管代码,或调用外部进程(WIX DTF)的C++。如果您使用的是Visual Studio或WiX,则两者都提供对托管代码自定义操作的支持

话虽如此,您的代码做了什么,要求它是直接调用?无论是否支持托管代码,都支持运行外部可执行文件。可执行文件可以调用类库


描述你的最终目标通常很有用。实际上,您已经决定了问题的解决方案是编辑MSI,但没有对实际问题的描述。您似乎希望修改现有MSI以调用代码,但不希望使用可用的工具重新生成代码

正如Phil所说,在进行自定义操作时,最好问问自己:在应用程序启动时,应用程序本身是否可以做得更好、更可靠?应用程序将始终在预期的上下文(用户)中运行,并且可能具有UAC提升或不具有UAC提升(最好不是)。MSI具有复杂的顺序、复杂的条件(运行的顺序)、复杂的模拟(有时作为LocalSystem运行)和复杂的自定义操作实现细节。模拟的自定义操作为整个等式增加了另一层不可预测性。尽量避免CAs。正如Phil所说,在进行自定义操作时,最好问问自己:在应用程序启动时,应用程序本身是否可以做得更好、更可靠?应用程序将始终在预期的上下文(用户)中运行,并且可能具有UAC提升或不具有UAC提升(最好不是)。MSI具有复杂的顺序、复杂的条件(运行的顺序)、复杂的模拟(有时作为LocalSystem运行)和复杂的自定义操作实现细节。模拟的自定义操作为整个等式增加了另一层不可预测性。尽量避免。。。