在Windows Server 2008 64位上,我需要.msi安装程序文件将一些文件写入\ windows \ system32 \ inetsrv文件夹。 (这些文件是一些XML Schema验证文件,C#XmlReaderSettings.Schema.Add()希望在该文件夹中。)
安装程序运行时,文件最终会出现在\ windows \ SysWOW64 \ inetsrv文件夹中,而不是它们所在的位置。
我试图让安装程序写入\ windows \ Sysnative文件夹,然后安装程序创建了一个具有该名称的文件夹,我不希望这样。有关抑制SysWOW64重定向的详细讨论,请参阅this page。
我应该如何让.msi将我的文件写入Windows 2008 64位上的\ windows \ system32 \ inetsrv文件夹?
答案 0 :(得分:2)
以下是您可以使用的system folder properties。我知道这是违反直觉的,但你试过System64Folder吗?阅读评论。
如果这不起作用,请尝试将System32添加到WindowsFolder的末尾。
Edit-1:尝试设置Win64 attribute on your Component元素并查看重定向行为是否发生变化。
答案 1 :(得分:1)
我尝试在wxs文件中使用Sysnative,但我得到了相同的结果:在Windows下创建一个Sysnative文件夹而不是使用System32。 所以我在vbscript CA中使用了Sysnative:找到了Windows文件夹(& H24&)并附加了\ Sysnative。这样可行,但在卸载期间需要第二个CA来删除文件。
答案 2 :(得分:0)
我通过将文件写入\ windows而不是\ windows \ system32解决了我的问题。 事实证明,C#XmlReaderSettings.Schema.Add()将使用\ windows目录下的完全限定路径。如果提供的路径不是完全限定的,它只是默认为system32文件夹。
这不是问题的真正答案,但它可以解决我的迫切需要。