3

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

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

我试图让安装程序然后写入 \windows\Sysnative 文件夹,并且安装程序创建了一个具有该确切名称的文件夹,这是我没想到的。有关抑制 SysWOW64 重定向的详细讨论,请参阅此页面

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

4

3 回答 3

2

以下是您可以使用的系统文件夹属性。我知道这是违反直觉的,但是您尝试过System64Folder吗?阅读备注。

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

Edit-1:尝试在 Component元素上设置Win64 属性并查看重定向行为是否发生变化。

于 2009-08-28T17:01:28.220 回答
1

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

于 2011-10-04T09:20:33.807 回答
0

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

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

于 2009-09-17T19:24:41.757 回答