分享

轻轻松松搞定Windows Installer!——家用电脑-->软件网络-->晋级大本营

 真心野狼 2007-05-11
轻轻松松搞定Windows Installer
[2006-12-20 10:08:34]   [作者:家用电脑]   [责任编辑:黄莹]
摘要:软件的删除与安装是日常电脑操作最常用到的功能,凡是用的到Windows的用户在安装或删除软件时,就难免会与Windows Installer打交道,相信很多朋友都曾遇到过Windows Installer无法运行或运行错误的情况,这将导致正在进行的安装或卸载操作失败。
 
    软件的删除与安装是日常电脑操作最常用到的功能,凡是用的到Windows的用户在安装或删除软件时,就难免会与Windows Installer打交道,相信很多朋友都曾遇到过Windows Installer无法运行或运行错误的情况,这将导致正在进行的安装或卸载操作失败。这是微软专门用来管理程序安装、卸载等操作的程序。如果它要是闹脾气,你电脑用得一定不会舒坦,本文将向你全面介绍Windows Installer,帮你彻底摆平它。
    
查清底细——认识Windows Installer
    
    要想与Windows Installer和平相处,首先要做的就是了解它,只有了解了它的功能和工作原理,在出现问题时我们才能对症下药,才能让它好好地为我们工作。所以我们首先来介绍一下Windows Installer。
    
    我们不能仅仅凭借Windows Installer这个名称来判断它的功能,准确地说,它是一个可扩展的软件管理系统,它可以支持如下的功能:管理软件的安装、管理软件组件的添加和删除、监视文件的复原以及使用回滚技术维护基本的灾难恢复。利用Windows Installer用户可以从多个源位置安装和运行软件。其实使用Windows Installer进行安装是更加安全的一种方式,它可以在安装过程中跟踪安装程序对系统做出的任何更改,这样无论是用户希望删除程序还是程序安装不成功,使用Windows Installer都可以将系统恢复到安装前的状态,这就是我们经常可以从微软那里听到的“回滚”。
    
    Windows Installer还充当着程序间的“交通警”,在极少数的情况下,当前的安装或卸载操作可能会与现有程序共享某个动态链接库文件(文件扩展名为.DLL的文件),这个安装或卸载的进程对共享动态链接库的操作可能影响到另外的程序,而Windows Installer可以为它们建立一个标准的安装规则,并要求所有的程序都必须执行这一规则,以避免冲突发生。由于Windows Installer完全跟踪了整个安装过程,所以它可以了解某个程序需要的所有文件,因此我们在“添加/删除程序”中使用的程序修复功能也是依赖Windows Installer完成的,它可以从安装程序中提取当前程序缺少的文件。Windows Installer还支持按需安装程序功能,例如,我们在安装很多程序时使用的自定义安装功能都是依赖Windows Installer来实现的。Windows Installer还能够按照管理员指令编写程序安装脚本,实现无人参与的程序安装。
    
    从结构上说,Windows Installer包括两个必不可少的部分:Msiexec.exe(客户端安装程序服务)和MSI软件包(Microsoft软件安装文件)。Msiexec.exe是Windows Installer的一个组件。在安装过程开启后,Msiexec.exe会被安装程序调用,Msiexec.exe会利用Msi.dll文件读取MSI软件包、MST文件(应用转换文件),并通过安装命令进行整个的安装。
    
使用实战——制作Windows Installer安装包
    
    相信很多对编程有一定了解的朋友,看了上边那段内容,都会对Windows Installer产生兴趣。其实作为微软官方发布的一种软件的安装方法,使用微软的编程工具可以很方便地将软件的安装文件发布成Windows Installer安装包。
    
    如果你使用的是微软的.net技术编写程序,使用微软的.net安装发布平台,可以通过几次简单的点击即可制作好Windows Installer的安装包。Visual Studio.NET里提供了四种发布模板:安装工程:为基于Windows的应用程序建立安装包;合并模块工程(.msm):可以被多个程序共享的包组件;Web安装工程:为一个Web应用程序建立安装包;Cab工程(.cab):创建cab文件。
    
    具体制作的方法是,打开Visual Studio IDE,选择“File-New-Setup and Deployment Projects”,然后选择“Setup Wizard”并设置工程的文件名和保存路径,如图1所示。

图1 新建Windows Installer安装文件
    单击“OK”后可以看到安装工程向导的欢迎界面,安装类型选择Windows应用程序,接着一路点击“Next”。接着它会弹出对话框,让用户选择需要添加的安装程序文件和组件,以及其他一些所需要的文件,如文档文件等。添加完成后继续点击“Next”。在最后出现的对话框中,你可以选择一些编辑器来完善整个安装过程,例如用文件系统编辑器,可以增加工程的输出,文件和其他一些项到发布工程中,并且指定它们在目标计算机上的安装位置;用注册表设置管理编辑器,可以指定需要加入到目标计算机的注册表中的一些键值;用文件类型管理编辑器:建立目标计算机上的文件关联等。设置完成后即可将安装程序发布成Windows Installer文件。
    
故障排错——解决Windows Installer出错问题
    
    对于普通用户来说,可能并不需要自己去建立Windows Installer安装文件,但是当Windows Installer出现问题时,我们可能在运行程序、安装、卸载软件时出现错误,我们还需要了解在Windows Installer出现问题时如何解决。
    
    Windows Installer最常见的问题是遇到“不能访问Windows Installer 服务。可能你在安全模式下运行Windows……”的提示,如图2所示。这类故障可以参考以下解决步骤。选择“开始-运行”,输入“cmd”后回车,打开命令行提示窗口,然后输入:msiexec /unregserver,这样可以将Windows Installer服务停用。然后再输入:msiexec /regserver,启用Windows Installer服务,如图3所示,一般这个问题就可以解决了。 

图2 Windows Installer最常见的错误 

图3 使用命令行重启Windows Installer服务 
    但是如果无法解决,我们就需要尝试重新安装Windows Installer服务了,首先还是使用命令:msiexec /unregserver,将Windows Installer服务停用,然后重启系统进入安全模式,在“运行”中输入:%windir%\system32后回车,将msi.dll、msiexec.exe和msihnd.dll删除,然后再在“运行”中输入:%windir%\system32\Dllcache,同样删除这个文件夹中的三个文件。
    
    重启Windows进入正常模式,然后下载Windows Installer的安装文件InstMsiW.exe,使用WinRAR将它解压缩,解压缩完成后,找到里边的msi.inf,在上边单击鼠标右键,选择“安装”,用同样的方法安装“mspatcha.inf”文件。再输入:msiexec.exe /regserver,重启Windows Installer。如果遇到重叠I/O操作导致Windows Installer无法正常运行,同样可以使用上边的方法。
    
    有的时候可能还会遇到“Windows Installer问题,错误5:拒绝访问”的错误,对于这类错误需要采用别的解决方法,首先你需要使用具有管理员权限的帐户登录,然后下载并重新安装最新的Windows Installer 2.0版。打开任务管理器,将里边的进程“ikernel.exe”结束掉。最后再删除“C:\Program Files\Common Files\InstallShield\Engine”下的所有文件。通过上边的操作后问题一般就可以解决了,但是如果还是无法解决,一般就只可能是NTFS权限问题了。打开“资源管理器”,选择“文件夹选项”,在里边取消“使用简单文件共享”的勾选,然后右击系统所在的分区盘符,如C,选择“属性”,再选择“安全”标签,在里边加入Everyone组,并赋予它“读取”权限。然后再在“运行”中输入:gpedit.msc,进入组策略中。选择“用户配置-管理模板-Windows 组件-Windows Installer”,双击里边的“永远以高特权进行安装”,将它设置为启用即可,如图4所示。

图4 设置Windows Installer以高权限运行
给系统减负——清除Windows Installer的垃圾
    
    Windows Installer可以帮助用户恢复错误软件的特性决定了它必将在系统中建立大量的备份文件,而这些文件如果管理不善就可能产生垃圾,占用我们宝贵的硬盘空间,所以我们还需要手动进行清除。
    
    当使用Windows Installer进行软件安装时,安装程序会在“%systemroot%\Installer”目录中创建一个备份的安装文件用于以后对软件的各种操作。但是当用户在安装或修改软件的过程中取消了操作或补丁安装必备条件不足而导致安装失败的时候,Windows Installer将退出安装流程,但是并不会删除释放出来的文件,当用户再次运行相同的操作时,原来的内容不会被覆盖,而是继续保留,这样垃圾就产生了。
    
    而我们需要做的就是将“%systemroot%\Installer”目录里面无用的文件挑选出来,软件操作执行完成后会在注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches下面生成一个键,键名是一个32字节的GUID值,生成的键下会有一个键值,名称固定为LocalPackage用于指向本地文件的路径,如图5所示。 

图5 查看安装完成文件所在的路径
    记录每一个键下的LocalPackage所指向文件的文件路径,然后打开“%systemroot%\Installer”目录,将这个目录根目录下的所有MSP 文件挑出,与注册表中内容可以对应的保留,剩下的MSP文件则可以删除。
    
    S-1-5-18指 Local System 用户,大多数补丁都是以 S-1-5-18 安装的。
    
    如果你觉得上述操作比较麻烦,还可以考虑专门用于清理Windows Installer的工具,可以考虑使用WICleanup进行清除,软件可以从:http://www./wicleanup/下载。软件的使用方法很简单,这里就不再赘述了。
    
    至此,Windows Installer就可以服服帖帖的为我们服务了,切记,由于大部分Windows下的程序都使用了Windows Installer进行安装,所以不要轻易删除Installer中的内容,否则可能导致某些软件工作不正常。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多