MSI安装程序,64位操作系统,写入\ windows \ system32 \ inetsrv文件夹

Windows Server 2008 64位上,我需要一个.msi安装程序文件将一些文件写入\ windows \ system32 \ inetsrv文件夹。 (这些文件是一些XML Schemavalidation文件,C#XmlReaderSettings.Schema.Add()希望在该文件夹中)。

安装程序运行时,文件最终在\ windows \ SysWOW64 \ inetsrv文件夹中,而不是它们需要的位置。

我试图让安装程序写入\ windows \ Sysnative文件夹,然后安装程序创build了一个具有确切名称的文件夹,我没想到这是可能的。 看到这个页面有关抑制SysWOW64redirect的一个很好的讨论。

我应该如何让.msi将我的文件写入Windows 2008 64位的\ windows \ system32 \ inetsrv文件夹中?

以下是您可以使用的系统文件夹属性 。 我知道这是反直觉,但你有没有尝试System64Folder ? 阅读评论。

如果这不起作用,请尝试将System32添加到WindowsFolder的末尾。

编辑1:尝试设置组件元素上的Win64属性 ,看看重定向行为是否改变。

我试图在wxs文件中使用Sysnative,但是我得到了相同的结果:在Windows下创建一个Sysnative文件夹,而不是使用System32。 所以我在一个vbscript CA中使用了Sysnative:找到了Windows文件夹(&H24&)并追加了\ Sysnative。 这是有效的,但是在卸载期间需要第二个CA来删除文件。

我通过将文件写入\ windows而不是\ windows \ system32来解决我的问题。 事实证明,C#XmlReaderSettings.Schema.Add()将在\ windows目录下使用完全限定的路径。 如果提供的路径不完全合格,它只是默认为system32文件夹。

这不是真正的问题的答案,但它是我的迫切需要的解决办法。