Windows 8 托管自定义操作在未安装.NET 3.5的Windows 8中不起作用

Windows 8 托管自定义操作在未安装.NET 3.5的Windows 8中不起作用,windows-8,windows-installer,custom-action,Windows 8,Windows Installer,Custom Action,在VisualStudio2010安装项目中,我有一个托管自定义操作。它过去工作得很好,但除非安装.NET3.5,否则无法在Windows8上运行。我不能强迫我的用户安装.NET3.5,我可以,但我会失去客户 我有一个模糊的理解,也许它不适用于.NET4,因为垫片DLL(installutillib.DLL)依赖于.NET2 我能做些什么让它工作吗?我知道有些人不喜欢托管CA,但需要它来编写一个依赖于一点逻辑的注册表项 感谢使用installutillib.dll管理的CA不受欢迎。这真的很糟糕

在VisualStudio2010安装项目中,我有一个托管自定义操作。它过去工作得很好,但除非安装.NET3.5,否则无法在Windows8上运行。我不能强迫我的用户安装.NET3.5,我可以,但我会失去客户

我有一个模糊的理解,也许它不适用于.NET4,因为垫片DLL(installutillib.DLL)依赖于.NET2

我能做些什么让它工作吗?我知道有些人不喜欢托管CA,但需要它来编写一个依赖于一点逻辑的注册表项


感谢使用installutillib.dll管理的CA不受欢迎。这真的很糟糕,比如在静默/非交互式安装期间抛出模态1001错误消息,不支持对MSI会话的访问,用CLR版本(粘性)刺青MSIEXEC进程,以及许多其他可怕的设计缺陷

使用Windows安装程序XML(WIX)部署工具基金会(DTF)来管理自定义操作。对于安装程序来说,它看起来像是一个本机自定义操作,并且支持表示SupportedRuntimes元素的CustomAction.Config XML


当然,很可能你不需要自定义操作来完成你想做的事情。注册表表支持[PROPERTY]表达式,它所属的组件可以使用条件来控制安装与否。

不赞成使用installutillib.dll管理CA。这真的很糟糕,比如在静默/非交互式安装期间抛出模态1001错误消息,不支持对MSI会话的访问,用CLR版本(粘性)刺青MSIEXEC进程,以及许多其他可怕的设计缺陷

使用Windows安装程序XML(WIX)部署工具基金会(DTF)来管理自定义操作。对于安装程序来说,它看起来像是一个本机自定义操作,并且支持表示SupportedRuntimes元素的CustomAction.Config XML


当然,很可能你不需要自定义操作来完成你想做的事情。注册表表支持[PROPERTY]表达式,它所属的组件可以使用条件来控制安装与否。

使用InnoSetup的一个重要原因:PS:需要.Net 3.5来编写注册表项吗?世界跆拳道联盟?有一百万种方法可以编写注册表,还有一百万种方法可以编写“自定义操作逻辑”。考虑一下iNoStup,好吗?Windows Installer具有注册表表。自定义操作不是必需的,FWIW编写MSI与“脚本”无关。事实恰恰相反。使用InnoSetup的一个很好的理由:PS:Require.NET3.5来编写注册表项?世界跆拳道联盟?有一百万种方法可以编写注册表,还有一百万种方法可以编写“自定义操作逻辑”。考虑一下iNoStup,好吗?Windows Installer具有注册表表。自定义操作不是必需的,FWIW编写MSI与“脚本”无关。事实上恰恰相反。谢谢,我在钻研WiX。谢谢,我在钻研WiX。