MSI 安装程序,64 位操作系统,写入 \windows\system32\inetsrv 文件夹
在 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 文件夹?
On Windows Server 2008 64-bit, I need an .msi installer file to write some files to \windows\system32\inetsrv folder. (The files are some XML Schema validation files, that C# XmlReaderSettings.Schema.Add() expects to be in that folder).
When the installer runs, the files end up in \windows\SysWOW64\inetsrv folder, not where they need to be.
I attempted to have the installer then write to \windows\Sysnative folder, and the installer created a folder with that exact name, which I didn't expect to be possible. See this page for a good discussion on suppressing SysWOW64 redirection.
How should I get the .msi to write my files to the \windows\system32\inetsrv folder on Windows 2008 64-bit?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下是您的系统文件夹属性可以使用。我知道这是违反直觉的,但是您尝试过 System64Folder ?阅读备注。
如果这不起作用,请尝试将 System32 添加到 Windows 文件夹。
Edit-1:尝试在 Component 元素上设置 Win64 属性 元素,看看是否重定向行为发生变化。
Here are the system folder properties you can use. I know it is counter-intuitive, but have you tried System64Folder? Read the remarks.
If that doesn't work, try just tacking System32 on to the end of WindowsFolder.
Edit-1: Try setting the Win64 attribute on your Component element and see if the redirection behavior changes.
我尝试在wxs文件中使用Sysnative,但得到了相同的结果:在Windows下创建一个Sysnative文件夹而不是使用System32。
所以我在 vbscript CA 中使用了 Sysnative:找到 Windows 文件夹 (&H24&) 并附加 \Sysnative。这可行,但需要第二个 CA 才能在卸载期间删除文件。
I tried to use Sysnative in wxs file but I got the same result: create a Sysnative folder under Windows instead of using System32.
So I used Sysnative in a vbscript CA: found the Windows folder (&H24&) and append \Sysnative. This works, but a second CA is needed to delete the files during uninstall.
我通过将文件写入 \windows 而不是 \windows\system32 解决了我的问题。
事实证明,C# XmlReaderSettings.Schema.Add() 将使用 \windows 目录下的完全限定路径。如果提供的路径不完全限定,则它默认为 system32 文件夹。
这并不是问题的真正答案,但它是满足我当前需求的解决方法。
I solved my problem by writing the files to \windows, rather than \windows\system32.
It turns out that the C# XmlReaderSettings.Schema.Add() will work with a fully qualified path under the \windows directory. It just defaults to the system32 folder if the path supplied is not fully qualified.
This isn't really an answer to the question, but it is a work-around for my immediate needs.