0

我正在尝试使用 VS2005 安装程序项目在 Windows Server 2008 (SP2 x64) 和 Windows 7 (x64) 上部署应用程序。MSI 版本(我认为)它是 2.0。

一切正常,除了一些注册表项和一些文件没有复制到安装机器上。MSI 系统不通知任何内容(我不知道 MSI 是否记录其操作)。

我的 MSI 安装程序项目与这些新操作系统之间是否存在不兼容性?在我看来,操作系统会保护自己以防在某些部分被修改。

例如,我正在尝试设置注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\WinLogon\SpecialAccounts\UserList\User

但它不是创建的。在同一个安装程序中,还有许多其他密钥,它们的创建方式与预期的一样(就像以前在 Windows XP 和 Windows Server 2003 上所做的那样)。

再举一个例子,我正在尝试安装文件

%SystemFolder%\oobe\info\backgrounds\backgroundDefault.jpg

(其中 %SystemFolder% 通常是“C:\Windows\System32”),但文件根本没有被复制!!!

这是怎么回事?


我发现backgroundDefault.jpg文件位于另一个目录中:%SystemRoot%\SysWOW64\oobe\info。

但我没有具体说明系统(64 位)文件夹。如何将文件复制到正确的位置?

4

1 回答 1

1

首先,关于日志记录,您可以请求 MSI 创建其操作的日志文件,如下所示:

msiexec.exe -i my_msi_file.msi -l*vx logfile.txt

这将创建一个名为logfile.txt.

其次,听起来您正在创建一个 32 位 MSI 并在 64 位 Windows 中运行它。这没有什么问题,但请注意 Windows 正在使用文件系统重定向。Windows 有一个单独的 SystemFolder 和 HKLM/SOFTWARE 密钥来托管 32 位应用程序。如果您查看 HKLM/SOFTWARE 的注册表,您可能会看到一个名为 Wow6432Node 的子键——这是 32 位应用程序写入其注册表数据的地方。

于 2010-06-17T16:28:59.083 回答