【原创】windows installer安装包有问题。解决办法
2012-08-24 12:26阅读:
这几天在开发windows服务程序的安装包(*.msi)。windows服务程序的开发环境是vs下vc++项目。
vs下c#和vb开发的应用程序,windows studio
installer安装项目的开发都有向导,只用overwirte一些控件的接口,相对简单很多。vc++的安装程序就比较悲催了,我使用了vbs脚本。
我需要实现的【自定义操作】
安装时解压.msi包之后,需要调用脚本,将我的exe可执行文件自动添加到windows服务,启动服务。
卸载时,调用脚本,自动停止服务、从系统删除服务。

【遇到的问题】
vsb脚本以前我没用过,百度找的例子改了改,卸载脚本service_uninstall.vbs就是这样子(还在调试,没有设置路径啊):
dim objshell
Set objShell = CreateObject('Wscript.Shell')
Msgbox('卸载bada_matrix_server服务1')
objShel
l.Run 'sc stop bada_matrix_control'
objShell.Run 'sc delete bada_matrix_control'
Msgbox('卸载bada_matrix_server服务2')
Wscript.quit
安装脚本service_install.vbs如下
dim objshell
Set objShell = CreateObject('Wscript.Shell')
Msgbox('创建bada_matrix_server服务1')
objShell.Run 'sc create bada_matrix_control binpath=
center_control.exe type= own start= auto'
Msgbox('创建bada_matrix_server服务2')
Wscript.quit
结果每次安装时,执行到安装脚本就出错了(报的错如下图)。我把安装脚本去掉了。只有卸载脚本,安装成功了。
悲剧的是装完了无法卸载,因为卸载时调用到service_uninstall.vbs就报错。自己挖了个坑跳进去了。

【在MSDN找到以下链接】
http://support.microsoft.com/kb/223300/zh-cn
如何启用 Windows Installer
日志记录
根据本文找到了安装报错日志信息:
【错误 1720。Windows Installer
程序包有问题。此安装需要的脚本不能运行。请与您的支持人员或程序包开发商联系。自定义操作
_A4FDC379_4708_4139_8373_64B37058925D 的脚本错误 -2146827864, Microsoft
VBScript 运行时错误: 缺少对象: 'WScript' 行 7, 列 1,
=== 记录停止: 2012-8-24
10:32:16 ===】
才发现原来是这一句错了
Wscript.quit,换成Set objShell =
Nothing
终于妥了。。
继续下一步工作:在脚本中获取安装路径,安装服务时需要指定exe文件的绝对路径。
如何启用 Windows Installer 日志记录
文章编号: 223300 -
查看本文应用于的产品
有关本文的 Microsoft Windows XP 版本,请参见
314852
(http://support.microsoft.com/kb/314852/zh-cn/ )
.
展开全部 |
关闭全部
Windows 包含一个注册表激活的日志记录服务,以便帮助诊断 Windows
安装程序问题。本文介绍如何启用此日志记录服务。
注意 本文中的注册表项对所有 Windows 操作系统均有效。
回到顶端
| 提供反馈
Windows Installer
可以使用日志记录来帮助解决安装软件包时出现的问题。通过向注册表添加项和值启用此日志记录。在添加并启用项之后,您可以重试有问题的安装,Windows
安装程序会跟踪安装进度并将进度发送到 Temp 文件夹。
新的日志文件名称是随机的,但以字母“Msi”开头,以 .log 扩展名结束。若要查找 Temp
文件夹位置,请在命令提示符处键入下行:
cd
%temp%
若要我们为您启用或禁用 Windows Installer 日志记录,请转到
“帮我修复此问题”部分。如果您想亲自启用
Windows Installer 日志记录,请转到“
我自己修复此问题”部分。
帮我修复此问题
若要自动修复该问题,请单击
“修复此问题”链接。然后单击
“文件下载”对话框中的
“运行”,并按照该向导中的步骤执行操作。
收起该表格展开该表格
| 启用 Windows Installer 日志记录 |
禁用 Windows Installer 日志记录 |
修复此问题
Microsoft Fix it 50380
|
修复此问题
Microsoft Fix it 50381
|
注意:此向导可能只提供英文版本。但是,Windows 的其他语言版本也提供自动修复功能。
注意:如果您使用的计算机并未出现此问题,则可将自动修复功能保存至闪存驱动器或 CD
中,然后就可在出现此问题的计算机中运行该功能。
我自己修复此问题
重要说明
此部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看
Microsoft 知识库中相应的文章:
322756
(http://support.microsoft.com/kb/322756/zh-cn/ )
如何在 Windows 中备份和还原注册表
启用 Windows Installer 日志记录
若要自己启用 Windows Installer 日志记录,请使用 Regedit.exe 打开注册表,然后创建以下路径和项:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
Reg_SZ:日志
值:voicewarmupx
值字段中的字母顺序可以随意。每一个字母都可以打开一种不同的日志记录模式。对于 MSI 版本 1.1,每个字母的实际函数如下所示: v
- 详细输出
o - 磁盘空间不足消息
i - 状态消息
c - 初始 UI 参数
e - 所有错误消息
w - 非致命警告
a - 启动操作
r - 特定于操作的记录
m - 内存不足或致命的退出消息
u - 用户请求
p - 终端属性
+ - 附加到现有文件之后
! - 将每一行刷新到日志中
x - 其他调试信息。“x”标志仅可在 Windows Server 2003 和更高版本操作系统、MSI 可重新分发版本 3.0 和
MSI 可重新分发的更高版本上使用。
“*”- 通配符,记录除 v 和 x 选项外的所有信息。若要包含 v 和 x 选项,请指定“/l*vx”。
注意这种情况仅可用于故障排除目的,并且不应该保留,因为这可能对系统性能和磁盘空间造成不利影响。
每次在您使用“控制面板”中的“添加/删除程序”工具时,将会创建一个新的 Msi*.log 文件。
通过组策略启用 Windows Installer 日志记录
您可以通过编辑相应的 OU 或 Directory
组策略通过组策略启用日志记录。在组策略下,请依次展开“计算机配置”、“管理模板”、“Windows 组件”,然后选择“Windows
Installer”。
双击
“日志记录”,然后单击
“启用”。在
“日志记录”框中,输入您希望记录的选项。日志文件
Msi.log 出现在系统卷的 Temp 文件夹中。
有关 MSI 日志记录的更多信息,请参阅 Windows 帮助。为此,请使用短语“msi 日志记录”进行搜索,并选择“Managing
options for computers through Group Policy”(通过组策略管理计算机选项)。
注意“X”标志的添加可在 Windows Server 2003 和更高版本操作系统、MSI 可重新分发版本 3.0 和
MSI 可重新分发的更高版本的本地执行。
回到顶端
| 提供反馈
文章编号: 223300 - 最后修改: 2011年7月29日 - 修订: 4.0
这篇文章中的信息适用于:
- Microsoft Windows Server 2003, Datacenter Edition for
Itanium-Based Systems
- Microsoft Windows Server 2003, Enterprise Edition for
Itanium-based Systems
- Microsoft Windows Server 2003 Standard Edition
- Microsoft Windows Server 2003 Datacenter Edition
- Microsoft Windows Server 2003 Enterprise Edition
- Microsoft Windows Server 2003 Web Edition
- Microsoft Windows XP Professional Edition
- Microsoft Windows XP Home Edition
- Windows Server 2008 Standard
- Windows Server 2008 Enterprise
- Windows Server 2008 Datacenter
- Windows Server 2008 for Itanium-Based Systems
- Windows Server 2008 Standard without Hyper-V
- Windows Server 2008 Enterprise without Hyper-V
- Windows Server 2008 Datacenter without Hyper-V
关键字:
|
kbenv kbhowto kbfixme kbmsifixme KB223300 |
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。所有该等文件及有关图形均'依样'提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。