【问题标题】:MSI Installer, 64 bit OS, write to \windows\system32\inetsrv folderMSI 安装程序,64 位操作系统,写入 \windows\system32\inetsrv 文件夹
【发布时间】:2009-08-28 16:49:35
【问题描述】:

在 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 文件夹?

【问题讨论】:

    标签: windows 64-bit windows-installer syswow64


    【解决方案1】:

    这是您可以使用的system folder properties。我知道这是违反直觉的,但你试过System64Folder 吗?阅读备注。

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

    Edit-1:尝试设置Win64 attribute on your Component 元素并查看重定向行为是否发生变化。

    【讨论】:

    • Jeff,您提供的系统文件夹属性很有帮助。但是,如果我尝试使用 System64Foler,则会收到目标平台不兼容的编译器错误。我的应用程序必须同时安装在 x86 和 x64 上。由于 SysWOW64 重定向,在 WindowsFolder 末尾添加 System32 会导致输出转到 \Windows\SysWOW64\。
    • 该死。这就是我的知识范围。 :(
    • 我正在尝试在 Visual Studio 中找到设置 win64 的位置。也许它是用目标平台 x86 完成的?我还担心一旦我在制作项目时设置了这个值,它将不再安装在 32 位机器上。提示和想法?
    • 您将其放在 WiX XML 中,而不是在项目的构建配置中。应该有一个 标签。查看链接...
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多