安装和部署项目的疑难解答
本节中的主题涵盖了在创建部署项目和部署应用程序时可能遇到的各种问题。
安装项目所需要的 .NET Framework 版本不同于应用程序所面向的 .NET Framework 版本
安装项目具有一个可以检查特定的 .NET Framework 版本的启动条件。 但是,该版本可能与应用程序所使用的目标 .NET Framework 不相同。 例如,应用程序可能面向 .NET Framework 2.0,但安装项目中的启动条件可能会查找和安装 .NET Framework 3.5。 另一个示例是:Visual Studio 项目模板可能面向 .NET Framework 4 Client Profile,但安装项目具有的启动条件将检查和安装 .NET Framework 4。
若要更改此默认行为,请执行以下步骤:
在**“解决方案资源管理器”**中,单击安装项目。
在**“视图”菜单上指向“编辑器”,然后单击“启动条件”**。
单击**“.NET Framework”**。
在“属性”窗口中,将**“版本”**属性更改为您希望安装项目检查和安装的 .NET Framework 版本。
确保 Setup.exe 程序也将检查和安装正确的 .NET Framework 版本。 有关更多信息,请参见“系统必备”对话框和如何:在 Windows Installer 部署中安装系统必备组件。
无法在 Windows Server 2008 R2 或 Windows 7 上安装 .NET Framework 3.5 SP1
您可以配置安装项目,以将 .NET Framework 3.5 SP1 包括为系统必备组件。 然而,在 Windows Server 2008 R2 或 Windows 7 计算机上安装此系统必备组件会显示以下错误消息:“必须使用‘角色管理工具’安装或配置 Microsoft .NET Framework 3.5 SP1。”虽然在 Windows Server 2008 R2 中以操作系统的可选组件的形式提供了 .NET Framework 3.5 SP1,但是默认情况下,此系统必备组件处于关闭状态。 有关更多信息,请参见Which Version of .NET is Built into Windows?(Windows 中内置了哪个版本的 .NET?)
若要解决此错误,请更改 .NET Framework 3.5 SP1 引导程序包。
创建运行此命令行“ocsetup Netfx3”的可执行程序。
导航到 %ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1 文件夹。
将可执行程序复制到 DotNetFX35SP1 文件夹。
导航到 en 文件夹并使用管理员权限打开 package.xml。
在 <Commands> 部分中添加 <Command> 元素,以便运行可执行程序。
在 Windows 7 上使用 Microsoft Visual Studio 注册表捕获实用工具时出现错误
当在运行 Windows 7 的计算机上使用 Microsoft Visual Studio 注册表捕获实用工具 (regcap.exe) 时,可能会看到以下错误:“Microsoft Visual Studio 注册表捕获实用工具已停止工作。”可能已生成安装程序项目,但未安装 dll。
若要解决此错误,请按下列步骤操作:
导航到 %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\Tools\Deployment。
右击 regcap.exe,然后单击**“属性”**。
单击**“兼容性”**。
选中**“兼容性”**模式下的复选框。
检测不到 Visual C++ 安装项目的依赖项
如果您将安装项目添加到 Visual C++ 解决方案中,那么当文件夹路径的名称中有空格时,就无法检测到 Visual C++ 解决方案中的依赖项。 作为一种解决方法,可重命名项目以便移除空格或手动添加依赖项。 例如,将 Documents\Visual Studio 2010\Projects 重命名为 Documents\VisualStudio2010\Projects。
无法在 Visual Studio 中生成受源代码管理的安装项目
在 Visual Studio 2008 中生成安装项目时,您可能会看到类似“文件 filename.vdproj 受源代码管理且无法签出,因此无法完成您正在尝试的命令。”这样的错误。安装项目不会自动从源代码管理中签出文件。
操作系统支持
Windows Server 2008 服务器核心或 Windows Server 2008 R2 服务器核心提供功能有限的低级维护服务器环境,不支持 Visual Studio 引导程序和 Visual Studio Installer(安装项目)。 例如,“服务器核心”安装选项仅支持 .NET Framework 3.5 服务器核心配置文件,因此依赖于完整的 .NET Framework 的 Visual Studio 功能无法运行。 有关更多信息,请参见Server Core。
无法安装托管的自定义操作
安装托管的自定义操作时,您可能会看到一条错误消息指出缺少 .installstate 文件。 如果托管的自定义操作未实现安装操作,则会发生这种情况。 安装操作将会创建 .installstate 文件,而其他操作将会更新该文件。
若要解决此错误,请在自定义操作中实现安装、卸载、提交和回滚操作。
无法为与 Visual Studio 2008 所使用的区域设置不同的区域设置安装 .NET Framework 3.5 SP1 语言包
当选择 .NET Framework 3.5 SP1 作为安装项目中的系统必备组件时,Visual Studio 不会生成用于安装不同区域设置的语言包的引导程序或安装程序。 例如,如果您使用的是非日语版本的 Visual Studio,则安装项目将不会包含 .NET Framework 3.5 SP1 日语版的语言包。
若要解决此错误并为 .NET Framework 3.5 SP1 创建日语版的可再发行组件,请在 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1 目录中新建一个 ja 目录。 ja 目录应包含 eula.rtf 和 package.xml 文件。
已安装 .NET Framework 3.5 SP1 的情况下无法安装语言包
如果已在计算机上安装核心 .NET Framework 3.5 SP1,则无法安装 .NET Framework 3.5 SP1 语言包。 例如,如果计算机已安装 .NET Framework 3.5 SP1,则无法安装 .NET Framework 3.5 SP1 日语版的语言包作为不同应用程序安装程序中的系统必备组件。
作为一种解决方法,只需为语言包创建一个引导程序包。 在引导程序包中,添加对于 .NET Framework 3.5 SP1 的依赖项,以便只有在已安装核心 .NET Framework 时才安装语言包。 或者,您也可以手动安装语言包。
64 位托管自定义操作引发 System.BadImageFormatException 异常
如果将 64 位托管自定义操作添加到安装项目,则 Visual Studio 生成过程会将 32 位版本的 InstallUtilLib.dll 作为 InstallUtil 嵌入到 MSI 中。 然后,将加载 32 位的 .NET Framework 来运行 64 位托管自定义操作,从而导致 BadImageFormatException 异常。
解决方法是使用 64 位版本的 InstallUtilLib.dll 替换 32 位版本。
通过 Windows Installer SDK 在 Orca 中打开生成的 .msi。
选择“Binary”表。
双击包含记录 InstallUtil 的单元格“[Binary Data]”。
确保已选中“从文件名读取二进制数据”并单击“浏览”按钮。
浏览到 %WINDIR%\Microsoft.NET\Framework64\v2.0.50727。
提示
Framework64 目录仅安装在 64 位平台上,与 64 位处理器类型对应。
选择 InstallUtilLib.dll。
单击“打开”按钮。
单击“确定”按钮。
有关更多信息,请参见 64-bit Managed Custom Actions with Visual Studio(64 位托管自定义操作 (Visual Studio))。
为自定义对话框和文本框创建路径
如果创建的自定义对话框包含文本框,则“安装文件夹”对话框应放置在该自定义对话框的后面。 然后,将会自动传播目录值。 否则,如果颠倒了自定义对话框和“安装文件夹”对话框的顺序,则必须手动传播目录值。
输出窗口中显示额外的生成错误
当出现特定的生成错误时,您可能还会看到类似“生成引导时的一般性失败”或“不可恢复的生成错误”的一般错误消息。忽略这些一般错误消息,并解决特定错误。
重新打开解决方案时再次包括以前排除的文件
从安装项目中排除某个文件后,您可能会看到,在关闭并重新打开解决方案时会再次包括该文件。 如果两个不同的源位置分别存在同一个 DLL 文件的一个副本,则可能发生这种情况。
若要解决此错误,请更改其中一个文件的**“复制本地”**属性:
在**“解决方案资源管理器”**中,单击要删除的 DLL 引用。
在**“视图”菜单上,单击“属性窗口”**。
将**“复制本地”**属性更改为 False。
生成安装项目失败,错误为“存储空间不足,无法完成此操作”
如果您向安装项目中添加了大型文件,则在您尝试生成安装项目时将会显示以下错误:“存储空间不足,无法完成此操作”,即使本地磁盘上具有可用的磁盘空间也是如此。 在生成过程期间,虚拟内存的使用量也可能会增加。
若要解决此错误,请将为生成计算机添加更多的 RAM,或者尝试以下解决方法:
在项目中添加一个与大型文件同名的文件。
在项目属性页中,将安装程序设置为打包成松散的未压缩文件。
生成。
将完整大小的大型文件复制到生成位置。
安装项目不更新修改的文件
即使您将安装项目配置为删除早期版本的文件,Windows Installer 也不会替换已由用户修改或替换的文件。 有关更多信息,请参见不存在带文件哈希检查的文件版本。
无法使用启动条件检查 .NET Framework 3.5 SP1
仅限 MSI 的方案不支持针对 .NET Framework 3.5 SP1 的系统必备组件检测。 而是必须配置 Setup.exe 引导程序来检查和安装 .NET Framework 3.5 SP1。 有关更多信息,请参见“系统必备”对话框。
如何创建包含 .NET Framework 的 64 位引导程序
如果将 .NET Framework 3.0 包含为系统必备组件并在 64 位计算机上安装 Setup.exe 引导程序,则会显示“不支持 64 位操作系统”的错误消息。
.NET Framework 3.5 同时支持 32 位和 64 位的操作系统。 如果您的应用程序同时面向 32 位和 64 位的操作系统,请在“系统必备组件”对话框中选择 .NET Framework 3.5。 有关更多信息,请参见“系统必备”对话框。
如何安装 SQL 2008 和 .NET Framework 3.5 SP1 的引导程序包?
通过安装 Visual Studio 学习版,可以将 SQL 2008 和 .NET Framework 3.5 SP1 的引导程序包安装到开发计算机上。 Visual Studio 2010 附带有 SQL 2008 和 .NET Framework 3.5 SP1 的引导程序包,不需要此解决方法。
文本框中的反斜杠导致无效的目录或 URL 异常
如果自定义操作依赖于客户键入安装文件夹路径,则您可能会看到 ArgumentException 错误消息。 这可能与无效的目录或 URL 有关。
若要防止出现此错误消息,请用空格替换**“Edit1”属性和“Edit1Value”**文本框中的反斜杠:/name="[TARGETDIR] "。 然后,对该值进行分析,并使用 Combine 方法创建完全限定的路径。
无法将换行符 (\n) 添加到安装项目中的错误消息
在安装项目中编写错误消息时,无法将换行符添加到安装项目或 Orca.exe 中。 您可以改为在后期生成操作中使用 Windows Installer API 通过以下命令来添加换行符:“INSERT INTO `Property` (`Property`, `Value`) VALUES 'ERRORMESSAGELINES', 'first\r\nnext\r\nlast')”。 有关使用后期生成操作的更多信息,请参见 https://go.microsoft.com/fwlink/?LinkId=150770。
在“系统必备组件”对话框中无法选择 .NET Framework 2.0 SP1 或 .NET Framework 3.0 SP1
在尚未安装 .NET Framework 2.0 SP1 或 .NET Framework 3.0 SP1 的情况下,“系统必备组件”对话框在要安装的应用程序列表中不会显示这两个组件。 它们不能用作独立的可再发行文件。 若要将其作为系统必备组件安装在最终用户计算机上,请在“系统必备组件”对话框中选择“.NET Framework 3.5”。 有关更多信息,请参见“系统必备”对话框。
文本框中的默认值覆盖命令行参数
如果通过使用 \qb 标记运行安装程序并传入命令行参数来设置用户对话框中的属性,则这些参数可能会被覆盖。 为了防止客户覆盖属性的默认值,请使用 Orca.exe 更改 msi 文件。
将对话框中的编辑字段值设置为其属性名。 例如,将**“Edit1Value”**属性设置为“[EDITB1]”。
在 Visual Studio 中生成 MSI。
使用 ORCA 编辑 MSI 并将属性的默认值放入“Property”表中。
保存 MSI。
您也可以使用后期生成操作来做出此更改。 有关使用后期生成操作的更多信息,请参见 https://go.microsoft.com/fwlink/?LinkId=150770。
未检测到程序集依赖项
在部署项目中添加项目输出组、程序集或合并模块后,会自动检测所有依赖程序集,并将检测到的程序集添加到该项目中。 建议您添加一个包含该程序集的项目输出组,这是因为部署工具可以更容易检测到项目输出组的依赖项。
如果依赖程序集是通过代码在运行时加载的,则部署工具无法检测到它。 应该避免通过代码加载程序集,或者您可以将依赖程序集手动添加到您的部署项目中。 下表列出了不能检测到依赖项的问题及其解决方案。
依赖项问题 |
解决方案 |
---|---|
项目引用了一个只应作为另一产品的一部分而安装的组件。 |
|
项目引用了一个未公开其所有依赖项的非托管组件。 |
|
项目引用了一个依赖于非托管组件的程序集。 |
|
当安装在区域设置不是英语的计算机上时,MFC 应用程序未进行本地化
使用 Visual Studio 部署项目来部署 MFC 应用程序时,未检测到已本地化的合并模块 Mfc_loc_e.msm 和 Mfc_loc_fe.msm 的依赖项。 合并模块包含在 Visual C++ 中;默认安装位置是 \Program Files\Common\Merge Modules。 为了分发已本地化的 MFC 应用程序,必须将这两个合并模块手动添加到您的部署项目中。
安装之后无法在 Web 服务器上找到文件
将 Web 安装程序安装到 Web 服务器上时,Web 应用程序文件夹和任何 Web 自定义文件夹的**“VirtualDirectory”**属性将确定这些文件夹中的文件相对于 Web 根文件夹的安装位置。 如果此属性保留为空,文件将安装在 Web 根文件夹 (inetpub\wwwroot) 中。 有关更多信息,请参见 VirtualDirectory 属性。
如何将 Web 应用程序安装到 Web 服务器根目录?
默认情况下,使用 Web 安装程序部署项目安装 Web 应用程序时,文件将安装在 Web 根文件夹下与部署项目同名的文件夹中。 Web 应用程序文件夹的 VirtualDirectory 属性决定了文件的安装位置。 若要安装到 Web 根目录下,请将**“VirtualDirectory”**属性更改为 null(删除默认值)。 有关更多信息,请参见 VirtualDirectory 属性。
如何关闭依赖项分析?
遗憾的是,没有直接关闭依赖项分析的搜索和解析的方式。 但是,可以采用以下解决方法:清除在单击**“SearchPath”属性时出现的对话框中的“包括标准搜索路径”**选项。
还应当考虑另外几个要点:
必须使用**“添加文件”命令(从“项目”菜单中选择“添加”,再选择“文件”)来添加文件。 如果使用“添加项目输出”(从“项目”菜单中选择“添加”,再选择“项目输出”**),就会包括代码项目报告的依赖项。
在生成过程中,您可能会看见一个或多个**“无法找到依赖项”**警告,但是在这种情况下可以忽略这些警告。
如果您只想针对某些文件关闭依赖项分析功能,则可以将这些文件放入一个关闭了标准搜索路径的合并模块项目, 然后使用**“添加合并模块”(从“项目”菜单中选择“添加”,再选择“添加合并模块”**)将 .msm 包括在一个打开了标准搜索路径的常规安装项目中。
如何关闭对用户应修改或删除的文件的修复?
Visual Studio 会创建建议的快捷方式,以便在程序启动时验证它的所有文件是否都存在。 若要更改此行为,使 Visual Studio 不修复该文件,请选择安装项目中的文件,并将**“Condition”属性更改为“NOT REINSTALL”,以便在修复时不会重新安装该文件,并将“Transitive”属性设置为“TRUE”**,以便重新评估该条件。 这样操作后,安装程序会在屏幕上闪烁片刻,这是删除该文件后第一次显示安装程序;此时,它会验证是否应当重新安装该文件,此后您就不会再看到该安装程序。
如何调试自定义操作/安装程序类?
可以使用下列方法之一:
在您的代码中添加对 System.Diagnostics.Debugger.Launch 的调用。 此方法会打开实时调试,并允许您将新的调试器附加到您的代码。
在您的代码中添加对 MessageBox.Show("Debug Me") 的调用。 当显示消息框时,使用 Visual Studio 附加到 MessageBox 进程, 然后在代码中添加断点(对于 Visual C# 项目)或停止点(对于 Visual Basic 项目)。
设置您的调试首选项以启动 %windir%\Microsoft. net\Framework\版本\InstallUtil.exe 作为在项目设计器的“调试”页上的一个外部程序。 自定义操作程序集的名称为命令行参数。 按 F5 时,命中断点。 InstallUtil.exe 将像 MSI 一样运行自定义操作。
用 COM 接口注册程序集不起作用
这是已知的 RegAsm Bug。 如果程序集具有依赖项(例如,依赖于另一个类库),那么,当调用 RegAsm 来获取注册信息时,可能会导致 RegisterCOM 失效。 RegAsm 是在 \obj 目录中调用的,因此无法找到依赖项,RegAsm 失败且不会发出通知。 最好的解决办法是从 \bin 目录手动添加程序集。 另一个解决办法是使用 RegisterSelfReg。
此外,还要确保通过使用 RegAsm/Codebase 手动注册。 如果程序集不在共享位置,那么,除非它和调用代码位于相同的目录中,否则会找不到。 /Codebase 将目录输入注册表。
如何使用日志文件来解决 Windows Installer 的安装问题?
Windows Installer 会将安装程序时其自身发生的操作记录到一个日志文件中。 该日志文件位于 .msi 文件驻留的目录中。
如何获取安装的日志文件?
可通过以下两种方法来获取:
使用日志记录开关,从命令行运行以下命令。
misexec /i mysetup.msi /l*v mylog.txt
将以下内容保存为 .reg 文件,并将其加载到注册表中。
REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer] "Logging"="voicewarmup" "Debug"=dword:00000007
然后打开 \temp 目录并按日期进行排序。 最新的 msi*.log 文件来自最新的安装或卸载。
如何安装到以前安装的产品的子目录中?
假设以前安装的产品(产品 1)已安装,并具有一个名为 MyFile.txt 的文件。
使用 Orca.exe(来自 Windows Installer SDK)查看“File”表,并找到表示 MyFile.txt 的行。
获取 Component_ 列的值,然后打开组件表。
在组件表的组件列中找到具有 Component_ 值的行,然后获取 ComponentID。 将该值复制到剪贴板。 关闭 Orca.exe。
在安装项目中,打开**“启动条件编辑器”**,并添加 Windows Installer 组件搜索。 对于新搜索的 ComponentID 属性,请粘贴 ComponentID。
复制**“Property”**属性。 它应该类似于 COMPONENTEXISTS1。
打开**“文件系统编辑器”**,并选择“应用程序文件夹”。
将“DefaultLocation”属性编辑成类似于 [COMPONENTEXISTS1]MySubFolder(因为 COMPONENTEXISTS1 中的路径包含结尾的“\”)。
完成以上过程中的步骤 6 之后,您可能需要在**“启动条件编辑器”**中添加一个条件,以便检查是否找到了该组件,并在组件未找到的情况下阻止安装并显示一则消息。 该条件将为 COMPONENTEXISTS1(它表示,在 COMPONENTEXISTS1 不为空的情况下可以运行安装程序)。
如何将自定义 Web 文件夹安装到非默认端口?
若要将自定义 Web 文件夹安装到不是在默认情况下指定的端口上,请从命令行运行安装。 此命令必须包含每个 Web 自定义文件夹的**“Property”**属性值。 通常情况下,值应类似于 NEWWEBPROPERTY1。 您还需要包括 Web 应用程序文件夹的 TARGETPORT。
例如,如果 Web 服务器位于端口 20 上,命令行应如下所示:
msiexec /i mywebsetup.msi TARGETPORT=20 NEWWEBPROPERTY1PORT=20
上述命令仅适用于一个 Web 文件夹。 如果您拥有多个 Web 文件夹,请按照上述内容针对每个文件夹添加更多的 PROPERTY=VALUE 对,以便将列出的每个文件夹的端口重定向到指定端口。
您可能需要移除**“安装地址”**对话框,因为如果有人在安装过程中更改了用户界面中的端口,自定义 Web 文件夹将使用命令行值。
如果安装到网站的根目录?
若要安装到网站的根目录(例如 c:\inetpub\wwwroot),请在 Web 安装项目中或在安装的过程中将 VirtualDirectory 设置为空字符串。
如何将 ServicedComponent 安装到 GAC 并在 COM+ 目录中对其进行配置?
如果您尝试将 ServicedComponent 安装到 GAC 中,并在 COM+ 目录中对其进行配置,您可能会收到下面的编译错误:
"Unable to build custom action named 'Primary output from RegServer (Active)' because the file's Folder property is set to Global Assembly Cache."
不支持该安装,因为在运行自定义操作时,GAC 中的程序集不是始终可用的(提交到 GAC)。
解决方法是:将代码放入不同的文件中,并将自定义操作代码放入不会转到 GAC 的文件中。 有时不能按照这种方式分发代码。
如何在快捷方式上创建卸载链接?
在安装项目目录中,创建一个新的 Uninstall.bat 文件。
在安装项目中,复制**“ProductCode”**属性(一个类似 [12345678-1234-1234-1234-123412341234] 的值)。
编辑 Uninstall.bat,让该程序的某一行包含以下内容(其中,ProductCode 是您在步骤 2 中复制的值):
Msiexec /x ProductCode
将 Uninstall.bat 添加到安装项目的应用程序文件夹。
右击 Uninstall.bat 并选择**“创建快捷方式”**以创建快捷方式。
将快捷方式放在安装项目中相应的**“开始”**菜单文件夹中。
重命名快捷方式,新名称类似于“卸载 <应用程序名称>”。
在何处可以找到演示如何使用安装项目的示例?
请参见 部署任务和演练以获取如何使用安装项目的示例。
如何规划基于 .NET Framework 的应用程序的部署?
以下指南将为您提供规划和实现基于 .NET Framework 的应用程序的有效部署所需的信息:Deploying .NET Framework-based Applications(部署基于 .NET Framework 的应用程序)。
在何处可以下载 Windows Installer SDK?
可以从 Microsoft 下载中心下载 Windows Installer SDK:
https://go.microsoft.com/fwlink/?LinkId=161393。
在何处可以获取 Crystal Reports 的更新和帮助?
可以从 BusinessObjects.com 网站上的“Downloads & Updates”(下载和更新)页安装经过更新的软件和合并模块:
http://support.businessobjects.com/fix/downloads_updates.asp
如何解决“不可恢复的生成错误”错误消息?
如果在生成安装和部署项目时收到“不可恢复的生成错误”错误消息,请阅读以下文章:
位于 https://support.microsoft.com/kb/329214/zh-cn 上的“PRB: 'Unrecoverable Build Error' Error Message When You Build Setup and Deployment Projects”(PRB:在生成安装和部署项目时收到“不可恢复的生成错误”错误消息)。
如何解决验证错误消息?
如果收到类似于 An error occurred when validating. HRESULT = '80040155 的错误消息,请参见位于 https://support.microsoft.com/kb/329214/zh-cn 上的“PRB: "Unrecoverable Build Error" Error Message When You Build Setup and Deployment Projects”(PRB:在生成安装和部署项目时出现“不可恢复的生成错误”错误消息),请按照“Missing Registrations”(注册丢失)标题下的步骤操作。
如何在使用自定义操作的部署过程中修改 IIS
位于 https://msdn.microsoft.com/zh-cn/library/aa289522(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx(vs.71).aspx 的“在部署期间通过自定义操作修改 Internet 信息服务”一文解释如何修复常见的问题。 这包括:
如何在“文件系统编辑器”中修改 Web 文件夹上没有的 IIS 文件夹的设置。
如何部署同时使用 Visual Basic 6 和 Visual Basic .NET(及更高版本)的混合应用程序。
与 Visual Basic 6 应用程序相比,使用 Visual Studio .NET(及更高版本)编写的应用程序在部署方面的更改。
如何部署 ASP.NET 应用程序?
有关如何使用 Visual Studio .NET 部署 ASP.NET 应用程序的信息,请参见 Deploying an ASP.NET App Using Visual Studio .NET(使用 Visual Studio .NET 部署 ASP.NET 应用程序)。
在 Windows 2000 上安装应用程序后,应用程序失败并显示需要 MDAC 2.8 的警告
任何引用 System.Data 命名空间的应用程序都依赖 Microsoft 数据访问组件 (MDAC) 2.8 版或更高版本。 大多数情况下,该文件已随操作系统一起安装。 在 Windows 2000 Service Pack3 和更早版本上,您可能必须与您的应用程序一起安装该组件。 若要达到此目的,请将该组件添加到引导程序包中,并在安装期间从 Microsoft 下载该文件。 有关更多信息,请参见应用程序部署必备。
如何更改自定义操作的权限级别?
默认情况下,将利用 SYSTEM 特权运行自定义操作,但您也许会发现,自定义操作需要更多特权才能完成任务。 若要更改此默认行为,请禁用自定义操作中的“noimpersonate”标记。 有关更多信息,请参见自定义操作脚本中的执行选项。
相关知识库文章
下面的知识库文章提供有关 Windows Installer 部署问题的信息:
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;320426 上的“‘This Setup Does Not Contain the .NET Framework’Error Message During Visual Studio .NET Deployment”(Visual Studio .NET 的部署过程中出现“本安装不包含 .NET Framework”错误消息)(320426)。
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;307358 上的“How To Create Shortcuts for a .NET Deployment Project”(如何为 .NET 部署项目创建快捷方式)(307358)
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;814700 上的“BUG: 'Error Installing ODBC Driver' Error Message When You Use the Vfpodbc.msm Merge Module in a Visual Studio .NET Setup and Deployment Project”(错误:在 Visual Studio .NET 安装和部署项目中使用 Vfpodbc.msm 合并模块时出现“安装 ODBC 驱动程序时出错”错误消息)(814700)
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;814744 上的“FIX: 'Unable to build custom action' Error When You Build a Setup Project”(修复:在生成安装项目时出现“无法生成自定义操作”错误)(814744)
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;321688 上的“HOW TO: Deploy a Visual Basic .NET Application That Uses ADO Interop”(如何:部署使用 ADO Interop 的 Visual Basic .NET 应用程序)(321688)
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;313498 上的“BUG:安装使用 Web 引导程序的包时出现错误 1619”(313498)
位于 https://support.microsoft.com/default.aspx?scid=kb;zh-cn;324168 上的“HOW TO: Deploy an Assembly to the Target Computer Global Assembly Cache (GAC)”(如何:将程序集部署到目标计算机全局程序集缓存)(324168)