精华内容
下载资源
问答
  • Windows常见问题及解决

    2017-08-25 14:03:04
    个人Win10使用过程中遇到的问题 1.显示器驱动程序已停止响应并且已恢复  原因:出现这个问题的根本原因是系统中的超时检测和恢复服务(TDR)发挥了作用。  解决:打开驱动精灵----点击“系统助手”----点击“显示...

    个人Win10使用过程中遇到的问题

    1.显示器驱动程序已停止响应并且已恢复

            原因:出现这个问题的根本原因是系统中的超时检测和恢复服务(TDR)发挥了作用。
            解决:打开驱动精灵----点击“系统助手”----点击“显示驱动停止相应”—“立即修复”。
            参考:http://jingyan.baidu.com/album/a3a3f811eef8268da2eb8a1c.html?picindex=1

    2.某个应用导致.xxx文件的默认应用设置出现问题

            原因:Win10给默认关联的UserChoice注册表项增加了校验码,发现第三方的修改就重置。
            解决:方法一:在控制面板中卸载掉KB3135173补丁(现在Windows10不让卸载了)
                    方法二:找到修改默认应用的应用,卸载。
           
    展开全文
  • flutter常见问题修复

    千次阅读 2020-03-28 22:51:58
    1、Connect to storage.googleapis.... 2、flutter 命令执行非常慢的解决方案 原因是最新的flutter最新版本的问题,一般切换到stable版本就可以了

    1、Connect to storage.googleapis.com:443

    Could not resolve all artifacts for configuration ':app:debugCompileClasspath'.
    * What went wrong:
    Execution failed for task ':app:compileDebugKotlin'.
    > Could not resolve all artifacts for configuration ':app:debugCompileClasspath'.
       > Could not download arm64_v8a_debug.jar (io.flutter:arm64_v8a_debug:1.0.0-fdf4f7883f678eb6d5c30c303c485fae1f8ba0cb)
          > Could not get resource 'https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_debug/1.0.0-fdf4f7883f678eb6d5c30c303c485fae1f8ba0cb/arm64_v8a_debug-1.0.0-fdf4f78
    83f678eb6d5c30c303c485fae1f8ba0cb.jar'.
             > Could not GET 'https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_debug/1.0.0-fdf4f7883f678eb6d5c30c303c485fae1f8ba0cb/arm64_v8a_debug-1.0.0-fdf4f7883f678
    eb6d5c30c303c485fae1f8ba0cb.jar'.
                > Connect to storage.googleapis.com:443 [storage.googleapis.com/172.217.160.80] failed: Connection timed out: connect
     
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
     
    * Get more help at https://help.gradle.org
     
    BUILD FAILED in 1m 46s
    

    解决办法:
    要翻墙。可能要下载相应包。

    2、flutter 命令执行非常慢的解决方案

    原因是最新的flutter最新版本的问题,一般切换到stable版本就可以了

    展开全文
  • Windows常见问题【解决方法汇总】

    千次阅读 2018-11-06 13:59:51
    Windows常见问题处理方法 1:Windows Update 更新错误解决命令(以管理员身份运行命令提示符,以此执行下列三个命令): SFC /SCANNOW DISM.exe /Online /Cleanup-image /Scanhealth DISM.exe /Online /Cleanup-...

    Windows常见问题处理方法 

    1:Windows Update 更新错误解决命令(以管理员身份运行命令提示符,以此执行下列三个命令): 
    SFC /SCANNOW 
    DISM.exe /Online /Cleanup-image /Scanhealth 
    DISM.exe /Online /Cleanup-image /Restorehealth 

    2:命令安装 Net.Framework 3.5(需修改盘符和路径为自己电脑的实际路径): 
    dism.exe /online /enable-feature /featurename:NetFX3/Source:F:\sources\sxs 

    3:Win8.1&Win10 启用 Administrator 账户: 
    net user administrator/active:yes 

    4:Win8.1&Win10 无法打开应用解决办法: 
    快捷键 Win+R 打开 windows 的运行菜单,然后输入 gpedit.msc 
    在本地组策略中依次展开 【计算机配置】【windows 设置】 【安全设置】 【安全选项】【安 
    全选项】【用户帐户控制:用于内置管理员的管理员批准模式】设置启用即可。 

    5:系统不进入桌面处理: 
    按下 Ctrl+Alt+Del 组合键,打开【Windows 任务管理器】 【进程】,删除所有映像名称为 
    explorer.exe 的进程,然后单击【文件】 【新建任务】 输入 explorer.exe 即可。 

    6:进入桌面很久才显示桌面图标: 
    按下 Win+R 组合键,在对话框中输入 regedit,打开【注册表编辑器】,在左侧菜单中依次
    点击打开 HKEY_LOCAL_MACHINE】 【SOFTWARE】 【Microsoft】 【Windows】 
    【CurrentVersion】 【Explorer】,然后在右侧窗口中找到【Max Cached Icons】选项, 
    双击打开【Max Cached Icons】选项,在弹出来的编辑窗口中,咱们将默认的数值数据修 
    改为 8192,然后点击确定保存设置即可。 

    7:提升系统开机速度: 
    Win+R 打开运行对话框,在对话框里输入:msconfig,打开【系统配置】 【引导】 【超 
    时】 将超时时间改为 2 秒,点击【高级选项】 【处理器数】下拉选项中选选择 2,勾选 
    【最大内存】,这里的数字无需修改。 

    8:如何正确找回win10的照片查看器 :
    把该以下文本新建TXT文档重命名为 Windows Photo Viewer.reg,然后双击运行该 reg 注册表文件把数据导入注册表中即可.
    Windows Registry Editor Version 5.00
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.jpg]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.jpeg]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.gif]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.png]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.bmp]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.pcx]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.tiff]
    @="PhotoViewer.FileAssoc.Tiff"
    ; Change Extension's File Type
    [HKEY_CURRENT_USER\Software\Classes\.ico]
    @="PhotoViewer.FileAssoc.Tiff"

    9:Win10右键菜单中的"固定到开始屏幕"选项怎么删除:
    按下WIN+R 在运行中输入regedit 回车,定位到:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandlers
    然后删除“ PintoStartScreen”项,然后关闭注册表,即可。

    10:Win10系统删除右键固定到"快速访问"选项的方法:
    按WIN+R调出运行对话框,然后输入 regedit 回车,定位到“HKEY_CLASSES_ROOT\Folder\shell\pintohome
    然后在右侧窗口中新建“字符串值”,然后命名为“Extended”即可。

    11:Windows10如何禁止驱动自动更新:
    Win+R运行,调出运行框,输入“gpedit.msc”打开组策略。
    依次找到:计算机配置-管理模版-系统-设备安装--设备安装限制,
    接着在右侧找到“阻止使用与下列设备安装程序类相匹配的驱动程序安装设备”,双击右键“编辑”或者双击,打开设置对话框;
    勾选“已启用”后点击“显示”输入设备的类GUID(这里有一点要注意的:不要勾选“也适用于匹配已安装的设备”)
    至于这个类GUID要怎么来的?这里接着教你,点击开始菜单,找到“设置”,在“设置”窗体中找到“关于”,点击右侧的“设备管理器”,
    在打开的“设备管理器”中找到你要禁止更新的设备,右键打开“属性”对话框。
    转到详细信息选项卡,即可在“属性:”下拉列表中找到对应的数据。直接在组策略中输入该值即可。

    12:隐藏Win10我的电脑中的7个文件夹:
    注册表法:将下列8行复制到文本文档ing保存,然后重命名为:Delete Folders.reg,导入注册表即可:
    Windows Registry Editor Version 5.00
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}]
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}]
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}]
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}]
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{088e3905-0323-4b02-9826-5d99428e115f}]
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}]
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{24ad3ad4-a569-4530-98e1-ab02f9417aa8}]

    13:Win10导航窗格重复显示的分区删除方法:
    新建txt文本文档,将下面的内容粘贴到文本文档中,将其命名为:Delete Extra Hard Disk.reg,导入注册表即可:
    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\Parameters\Device]
    "TreatAsInternalPort"=hex(7):30,00,00,00,31,00,00,00,32,00,00,00,33,00,00,00,34,00,00,00,35,00,00,00,00,00
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders\{F5FB2C77-0E2F-4A16-A381-3E560C68BC83}]
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders\-{F5FB2C77-0E2F-4A16-A381-3E560C68BC83}]

    14:Windows10系统提示“内存不能为written”的解决方案:
    1、运行→regedit→进入注册表, 在→
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
    这个位置有一个正常的键值{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。
    2、打开CMD窗口输入如下命令:
    for %i in (%windir%\system32\*.dll) do regsvr32.exe /s %i 回车
    for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车
    3、两条分别运行完成后重启机器。
    四、如果以上方法无法解决只能使用最后一招:
    1、完全注册dll:打开“运行”输入→cmd→回车。
    2、然后把下面这行字符复制到黑色cmd框里面去回车等待dll文件全部注册完成就关闭可以了,为防止输入错误可以复制这条指令,然后在命令提示符后击鼠标右键→粘贴→回车,耐心等待,直到屏幕滚动停止。
    (下面是要运行的代码):
    for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
    3、完成后重新启动机器。

    15:修复Layered Service Provider网络协议的接口解决ESET不能更新的问题:
    进入命令提示符窗口,输入:netsh winsock reset,然后稍等片刻,出现提示,重启电脑即可。

    16:解决explorer.exe 应用程序错误,内存不能为 read或written的解决方法:
    打开命令提示符窗口,输入:for %1 in (%windir%/system32/*.dll) do regsvr32.exe /s %1,回车后等待全部注册完成即可。

    17:清理应用商店缓存方法:
    打开命令提示符,输入:wsreset,等待执行完成即可。

    18:强制删除注册表:
    使用Sysinternals工具中的Psexec,将下载的文件放到C:\Windows\System32下,然后执行命令:psexec -i -d -s regedit,此时,注册表以系统权限打开,可删除任何注册表项。

    19:查看Windows和Office是否永久激活命令:
    Windows激活信息查看:slmgr.vbs -xpr
    Office激活信息查看:cscript "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /dstatus
    备注:64位系统装32位的office,Program Files需要改成Program Files (x86)
    在LICENSE STATUS: 后面显示为LICENSED就是已经获得许可,也是就是永久激活;
    在LICENSE STATUS一行中显示为: ---180 days (43200 minuts(s) before expiring) 刚说明是kms激活,180天时间一到后还需要再次激活。

    20:删除Windows和Office的KMS激活方法:
    Windows KMS删除:以管理员身份运行CMD,依次输入以下三个命令:
    slmgr /upk         slmgr /ckms         slmgr /rearm
    执行完成后重启电脑,打开服务(win+R输入services.msc),重启Software Protection服务,即可删除Windows KMS激活。
    Office KMS删除:以管理员身份运行CMD,依次输入以下命令:
    cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus
    cscript "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /remhst

    21:“此Flash Player 与您的地区不相容”解决方法:
    Chromium内核浏览器,将破解的(Hotfix文件)Pepflashplayer.dll文件复制到下列路径替换,再将PepperFlash文件夹属性设置为只读:
    C:\Users\Administrator\AppData\Local\Slimjet\User Data\PepperFlash
    浏览器文件路径查看方法:
    Chromium内核浏览器在地址栏输入:about:flash         FireFox浏览器在地址栏输入:about:plugins
    Windows10 X64系统,替换到下列两个路径:
    32位目录:C:\Windows\SysWOW64\Macromed\Flash
    64位目录:C:\Windows\System32\Macromed\Flash

    22:Windows 10升级后,Google浏览器打开速度变慢解决方法:
    以管理员权限打开命令提示符,输入:reg delete HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root /va /f
    回车后重启电脑即可。

    23:Windows 10系统清理右键多余菜单:
    Win+R 打开运行对话框,在对话框里输入:Regedit,在注册表编辑器上,展开:
    HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers;删除软件对应名称项即可;

    24:Windows 10设置窗口为护眼色:
    Win+R 打开运行对话框,在对话框里输入:Regedit,在注册表编辑器上,展开:
    HKEY_CURRENT_USER\Control Panel\Colors,双击“Window”将其值改成“202 234 206”,并“确定”;
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors\Standard,
    更改"Window"值为十进制“13298382”或十六进制“caeace”;

    25:手动创建OEM分区步骤:
    在桌面【此电脑】上右键单击选择【管理】,左键选择【存储】下的【磁盘管理】,在窗口中选择需要分的磁盘,右键单击,点击【压缩卷】;
    对话框中填写要压缩的空间量,点击【压缩】,压缩完成后出现一块分区磁盘,鼠标右键单击,选择【新建简单卷】;
    进入【新建简单卷向导】对话框,点击【下一步】,填写磁盘的容量和驱动器号,填写【文件系统】,选择【NTFS】,点击【完成】即可;
    在创建好的分区上右键,选择【更改驱动器号和路径】,单击【删除】并确定;
    在开始菜单上右键,选择【运行】,输入:diskpart.exe并回车,提示转入DISKPART;然后输入:rescan(扫描硬盘);
    接着输入:list disk(硬盘列表,可以看到连接到该主机的硬盘列表),接着输入:select disk X(X代表磁盘序号,功能为:选择一个磁盘 );
    接着输入:list partition(显示磁盘中的分区),接着输入:select partition Y(Y代表分区序号,功能为:选择一个分区);
    接着输入:Gpt attributes=0x0000000000000001(功能为:将选择的分区设置为OEM分区);
    OEM分区删除命令:delete partition override
    在 Diskpart 命令中,对选择的分区执行:create partition primary id=xx size=xx即可,其中ID标识了OEM厂商,例如ID=DE,
    就是向Windows声明它是戴尔的OEM分区;关于更多的厂商代码说明,可以执行命令:help create par pri来了解;

    26:Windows 10电源设置中没有快速启动选项:
    以管理员身份打开命令提示符,输入:powercfg /h on,回车即可;

    27:Windows 10 2004版更新记录文件所在目录:
    C:\ProgramData\USOPrivate\UpdateStore

     

    后续有能100%解决问题的命令,会继续更新,谢谢。

    展开全文
  • Windows Installer 常见问题

    千次阅读 2008-04-24 15:55:00
    常见问题问: Windows Installer是一种什么样的产品? 答: Windows Installer是一种系统服务,用来安装和管理系统中的应用程序。它为应用程序的开发、定制、安装和升级提供了一种标准化的方法和手段。 问: ...

    常见问题
    问: Windows Installer是一种什么样的产品?
    答: Windows Installer是一种系统服务,用来安装和管理系统中的应用程序。它为应用程序的开发、定制、安装和升级提供了一种标准化的方法和手段。
     
    问: Windows Installer都提供了哪些基本功能?
    答: WindowsInstaller提供了以下基本功能:

    ? 事务型操作:所有的安装操作都是事务形式的。对于WindowsInstaller执行的每项操作,它都会产生一个对应的撤销(Undo)操作,以便在需要时撤销用户对系统所做的修改。如果在安装过程中发生了一个错误,WindowsInstaller可以将系统还原回进行安装前的状态。
     
    ? 自我治愈:WindowsInstaller支持应用程序的“自我治愈”能力。应用程序可以在启动时检查各种常见的安全问题,例如文件或注册表键丢失问题,并且可以自动修复自己。
     
    ? 按需安装:WindowsInstaller支持应用程序的按需安装。例如,MicrosoftOfficeWord的拼写检查功能在默认情况下不会被安装,但是用户也可以根据需要安装该功能。
     
    ? 在“锁定”环境下的安装:在全面锁定的环境中,用户一般没有安装应用程序所需的权限或能力。在大多数情况中,他们没有对计算机“ProgramFiles”文件夹或者HKEY_LOCAL_MACHINE注册表位置的“写”权限。例如,如果管理员通过组策略允许用户安装某个程序包,WindowsInstaller便可以代表用户进行程序的安装。
     
    ? 状态管理:WindowsInstaller为应用程序提供了一组标准的Win32?应用程序编程接口(API)和自动化接口,管理员可以使用它们查询程序在计算机中的安装状态。API能够查询程序的当前状态,校验现有状态,或者修复受损的状态,并且能够从一种状态过渡到另一种状态。
     
     
    问: Windows Installer V2.0是该产品的最新版本。2.0版本提供了哪些新增功能和改进功能?
    答: 同先前版本相比,2.0版本的WindowsInstaller包括了大量的新增特性和改进特性,例如:

    ? 组件的安装和管理:WindowsInstaller2.0与SxS(Fusion)和CommonLanguageRuntime(CLR)组件完全集成。.
     
    ? 更高的安全性:WindowsInstaller的体系结构经过修改,具有更高的安全性。
     
    ? 隐藏个人信息的能力:WindowsInstaller为作者提供了一种在日志文件中隐藏信息(例如口令)的方法。
     
    ? 多个用户间的隔离:对WindowsInstaller架构所做的修改实现了每个用户安装的真正隔离,因为每个用户对产品进行的配置不再在多个用户间进行共享。
     
    ? 对数字签名的支持:数字签名支持已经包括在有关WindowsInstaller的文件之中,例如软件包(.msi)、补丁(.msp)和转换(.mst)。WindowsInstaller还能够对与安装有关的外部.cab文件进行数字签名验证。
     
    ? 更健壮的补丁:2.0版本修正了众多的补丁问题。
     
    ? 简化了补丁的制作过程:在2.0版本中,补丁冲突问题的圆满解决消除了用户在制作补丁过程中的一些负担。针对2.0版本开发安装程序的制作人员不再需要跟踪每一个磁盘ID和先前补丁使用的最后一个序列号。
     
    ? 改进了补丁和升级文件的安装过程:2.0版本减少了不必要的源程序解析尝试。在大多数情况下,当应用某个补丁的时候,用户不再被要求访问原始程序的位置,除非补丁和升级文件的制作者特别强调这一点。此外,由于无需复制那些和版本变化无关的文件,升级过程的效率也提高了。
     
    ? 支持转化和来自URL源的补丁:WindowsInstaller的2.0版本现在允许使用转化和来自URL(统一资源定位符)的补丁。
     
    ? 操作系统特性的增强:与系统还原和软件限制策略(Windows?XP的功能特性)集成在一起,并且改善了对终端服务的支持。
     
    ? 64位Windows上的64位服务:WindowsInstaller是一个天生的64位服务,能够64位版本的Windows上安装64位的应用程序。
     
    ? 得到增强的日志记录能力:事件的日志记录已经得到了极大的改进,以便帮助技术人员解决安装过程中出现的问题。这包括确保每一个不同的错误都拥有一个独一无二的事件ID。
     
    ? 可配置的合并模块:经过改进的MergeMod.dll允许用户制作合并模块(.msm文件),这些文件包含一些属性,能够由合并模块的使用者加以配置。
     
     
    问: 我可以从哪里获得有关Windows Installer的更多信息?
    答: 有关WindowsInstaller的更多信息可以在WindowsInstaller软件开发工具包(SDK)中找到。

    有关WindowsInstaller的进一步信息还可以通过以下白皮书获得:
     
    问:
    答: 

    可用性
    问: 哪些版本的Windows包括了Windows Installer?
    答: Microsoft Windows 2000、Windows Millennium Edition(Windows Me)以及Windows XP 包括了Windows Installer。Windows 2000包括了1.1版本的Windows Installer,Windows Me 包括的是1.2版本,而Windows XP包括的Windows Installer则为2.0版本。Windows 2000 SP3 也包含了2.0版本的Windows Installer。
     
    问: Windows Installer支持哪些操作系统?
    答: 下表详细介绍了每个版本的Windows Installer所支持的操作系统。
     
    问: 我可以从何处获得最新版本的Windows Installer再分发程序?
    答: 您可以通过Microsoft Platform SDK Redistributables站点获得最新版本的Windows Installer再分发程序,Windows Installer的再分发程序有两个不同的版本:一个适用于Windows 95、Windows 98和Windows Me;另一个适用于Windows NT和Windows 2000。
     
    问: 我需要在我的安装程序中再次分发这些技术,我可以从哪里获得针对Microsoft技术的合并模块?
    答: Microsoft合并模块随同Microsoft Visual Studio .NET一同提供。它们的默认安装位置为 [ProgramFilesFolder]/Common Files/Merge Modules。请注意:并不是所有的Microsoft再分发组件都有可用的合并模块。
     
    问:
    答: 

    教学指导
    问: 我应该怎样在“添加或删除程序”中隐藏某个应用此程序?
    答: 为了在“添加或删除程序”中隐藏某个应用程序,请将ARPSYSTEMCOMPONENT属性设置为1。该属性可以在命令行、在程序包的“属性”表中设置,或者通过转换进行设置。在Windows 2000以前的操作系统上,可以通过将ARPNOREMOVE属性设置为1 来在“添加或删除程序”中隐藏应用程序。在Windows 2000和Windows XP操作系统中, ARNOREMOVE可以禁用“添加或删除程序”中的“删除”按钮。
     
    问: 在Orca中对我的.msi程序包进行多次编辑之后,程序包的体积显著增加了。我应该怎样减小.msi文件的大小呢?
    答: .msi程序包的数据库格式是建立在OLE结构化存储基础上的。频繁对数据库进行编辑回导致碎片的出现,并因此浪费一些空间。您可以通过在Orca中使用“另存为”命令减小.msi程序包的大小。或者,您也可以使用msidb.exe导出所有表,然后再将这些表重新导入到一个新建的数据库中,以便减小程序包的体积大小。

    Orca和msidb.exe工具可以通过WindowsInstallerSDK获得。
     
    问: 如何在安装期间隐藏“取消”按钮?
    答: 从WindowsInstaller2.0开始,我们提供了一个命令行选项,以便在显示简单的安装界面(UI)时,隐藏“取消”按钮。以下命令行脚本演示了这个新选项的使用方法:

    msiexec/i{pathtopackage}/qb!

    此外,您还可以使用MsiSetInternalUIWin32API并结合使用INSTALLUILEVEL_HIDECANCEL和INSTALLUILEVEL_BASIC来隐藏“取消”按钮。或者,在使用WindowsInstaller对象的读写UILevel属性时,您可以结合使用msiUILevelHideCancel和msiUILevelBasic,通过WindowsInstaller自动化来实现这一目的。

    在程序安装期间,“取消”按钮的存在与否可以通过一个DLL或者脚本定制操作加以改变,该操作会发送一个INSTALLMESSAGE_COMMONDATA消息。DLL定制操作使用MsiProcessMessageWin32API发送INSTALLMESSAGE_COMMONDATA消息,在该消息中,记录的字段1被设置为“2”,而字段2被设置为“0”。为了解除“取消”按钮的隐藏状态,您可以仍然使用这个消息,但是请将字段2设置为“1”。脚本定制操作使用会话对象的等效消息(Message)方法。
     
    问: 我怎样才能只安装那些我希望使用的功能特性?
    答: 您可以使用ADDLOCAL、ADDSOURCE和ADVERTISE属性安装某些特定的功能特性。以下命令行脚本可以将example.msi程序包中的“Sports”(体育)和“News”(新闻)特性安装在本地计算机上。

    msiexec/iexample.msiADDLOCAL=Sports,News/qb

    以下命令行脚本可以通告“Sports”特性和安装“News”特性,以便从源程序运行这些特性。

    Msiexec/iexample.msiADVERTISE=SportsADDSOURCE=News/qb

    另一个重要的注意事项是:功能特性的名称是大小写敏感的。
     
    问: 我怎样在升级期间强制升级一个和版本无关的文件,即使用户已经修改了该文件?
    答: 通过在“文件”(File)表中为文件制作一个版本号,您可以在升级期间“强制升级”一个和版本无关的文件。根据Windows Installer的文件版本控制原则,版本发生变化的文件将覆盖一个和版本无关的文件。需要注意的是:所有的后续重新安装过程都需要访问源程序,因为所有的后续版本检查都会指出文件需要被重新安装。
     
    问: 我怎样才能正确地书写路径字符串?
    答: 目录属性值以一个目录分隔符结束。因此,路径字符串的书写不要求使用目录分隔符。

    错误写法:[DirectoryProperty]/someLocation
    正确写法:[DirectoryProperty]someLocation
     
    问: 我应该怎样为不同的地理区域开发产品?
    答: 对于拥有不同版本的产品--这种不同既可以是产品语言上的不同,也可以是产品功能间的差异,您可以使用不同的产品代号。以便指明方向、熟悉产品间的关系,并且让产品共享相同的升级代码。
     
    问:
    答: 

    安全性
    问: 我怎样在升级期间强制升级一个和版本无关的文件,即使用户已经修改了该文件?
    答: 通过在“文件”(File)表中为文件制作一个版本号,您可以在升级期间“强制升级”一个和版本无关的文件。根据Windows Installer的文件版本控制原则,版本发生变化的文件将覆盖一个和版本无关的文件。需要注意的是:所有的后续重新安装过程都需要访问源程序,因为所有的后续版本检查都会指出文件需要被重新安装。
     
    问: 我怎样在升级期间强制升级一个和版本无关的文件,即使用户已经修改了该文件?
    答: 通过在“文件”(File)表中为文件制作一个版本号,您可以在升级期间“强制升级”一个和版本无关的文件。根据Windows Installer的文件版本控制原则,版本发生变化的文件将覆盖一个和版本无关的文件。需要注意的是:所有的后续重新安装过程都需要访问源程序,因为所有的后续版本检查都会指出文件需要被重新安装。
     
    问: 我怎样在升级期间强制升级一个和版本无关的文件,即使用户已经修改了该文件?
    答: 通过在“文件”(File)表中为文件制作一个版本号,您可以在升级期间“强制升级”一个和版本无关的文件。根据Windows Installer的文件版本控制原则,版本发生变化的文件将覆盖一个和版本无关的文件。需要注意的是:所有的后续重新安装过程都需要访问源程序,因为所有的后续版本检查都会指出文件需要被重新安装。
     
    问:
    答: 

    定制操作
    问: “延迟”定制操作和“立即”定制操作有何不同?
    答: “延迟”定制操作仅仅能够以执行后续表中的InstallInitialize或InstallFinalize操作作为其后续操作。而“立即”定制操作可以以后续表中的任何地方作为其后续操作。

    “延迟”定制操作不能访问安装数据库。事实上,“延迟”定制操作只具有十分有限的安装会话访问能力,因为安装脚本可以在创建该脚本的安装会话的外部执行。“立即”定制操作可以访问安装数据库,并且可以读取和设置安装属性,修改特性和组件状态,以及添加临时行、临时列和临时表等其它东西。

    尽管“延迟”和“立即”定制操作都可以运行在初始化安装操作的用户上下文环境中,但是只有“延迟”定制操作可以使用系统上下文环境以得到提升的权限运行。

    “延迟”定制操作不能够立即执行。相反,它们按照预先设定的日程在脚本执行期间运行。在InstallExecute、InstallExecuteAgain或InstallFinalize操作运行之前,执行脚本并不会被处理。
     
    问: 我什么时候应该使用延迟定制脚本,而不是使用立即定制脚本?
    答: 如果定制操作必须修改系统或者调用另一个系统服务,那么您必须使用延迟定制脚本。此外,只有延迟定制操作能够运行经过权限提升的上下文环境中。如果您的定制脚本需要经过提升的权限才能运行,那么您需要将定制脚本标记为“延迟”脚本。注意:只有在安装程序自身经过权限提升的情况下,标记为在系统上下文环境(msidbCustomActionTypeInScript+msidbCustomActionTypeNoImpersonate)中运行的定制操作才能够运行。

    此外,如果希望通过定制操作对系统进行修改,您还应该包括一个回滚定制操作,以便撤销修改,将系统还原回先前状态。
     
    问: 如何向我的延迟定制脚本提供数据?
    答: 延迟定制操作只能对安装会话进行有限访问。如果您的延迟定制操作无法通过这种有限的访问获取到有关安装的信息,您可以通过CustomActionData属性为延迟定制操作提供这些信息。这种方法仅仅对脚本和DLL延迟定制操作有效。其具体工作方式如下:

    在延迟定制操作之前执行的立即定制操作会使用与延迟定制操作所使用的相同名称将某个属性设置为延迟定制操作需要的值。所以,如果延迟定制操作的主键名称为“DeferredCA”,那么立即定制操作将把名为“DeferredCA”的属性设置为延迟定制操作需要的值。类型51的定制操作可以很容易地设置该属性。另一种方法是:立即定制操作使用“szName”参数调用MsiSetProperty,其中szName参数等于“DeferredCA”。注意:操作名称是大小写敏感的。

    当延迟定制操作排队进入安装脚本之后,安装程序将会把“DeferredCA”属性值写入到安装脚本之中,并用它作为CustomActionData属性的值。

    在执行时,延迟定制脚本通过调用带有szName参数的MsiGetProperty来获得所需的值,其中szName参数等于CustomActionData。或者,脚本定制操作会使用会话(Session)对象的“Property”属性。
     
    问: 我能够使用定制操作重新启动计算机吗?
    答: 通过使用MSIRUNMODE_REBOOTATEND或MSIRUNMODE_REBOOT的运行模式以及等于“TRUE”的状态值调用MsiSetMode,立即定制操作可以重新启动计算机。因为MsiSetMode需要一个hInstall句柄,所以只有DLL和脚本定制操作能够重新启动计算机。脚本定制操作将使用“会话”对象的“模式”属性。或者,立即定制操作也可以使用等于“ScheduleReboot”的szAction参数调用MsiDoAction。

    延迟定制操作不能调用MsiSetMode。延迟定制操作需要对注册表某个位置的值进行设置,该值会被立即定制操作和随后的InstallFinalize读取。然后,立即定制操作可以使用MsiSetMode设定计算机的重新启动日程。如果需要使用该方法,您还应该提供一个回滚定制操作,以便在取消安装时,从注册表中删除能够触发重新启动的该键值。
     
    问: 我的定制操作应该如何向日志文件添加信息?
    答: 通过使用MsiProcessMessage API发送INSTALLMESSAGE_INFO消息,DLL和脚本定制操作可以向日志文件添加信息。脚本定制操作将使用“Session”(会话)对象的“Message”(消息)方法。
     
    问: 为什么在安装程序时,会有多个MSIExec.exe进程运行在我的计算机上?
    答: 在程序安装期间,会有多个MSIExec进程运行。之所以会出现这种现象,主要是因为Windows Installer使用了客户机-服务器模式来执行程序安装任务。此外,出于安全方面的考虑,Windows Installer会在一个“沙箱”(sandbox)进程中驻留DLL和脚本定制操作。根据安装过程初始化方式的不同,一个MSIExec进程将作为客户机进程。另一个MSIExec进程将作为Windows Installer服务。在计算机上运行的所有MSIExec进程通常都是用来托管定制操作的沙箱进程。决定哪一个MSIExec进程将作为面向脚本或DLL定制操作的沙箱进程的具体过程部分取决于定制操作是以经过提升的权限运行还是以人格化的方式运行,以及该定制操作是32位的还是64位的。
     
    问:
    答: 

    补丁和升级
    问: 小型、次要和主要升级之间有何不同?
    答: “小型”升级是一种只对很少的文件进行修改或者只增加少量新内容的产品升级。“次要”升级是对产品进行的修改足以改变产品版本号的产品升级,而“主要”升级则是对产品进行了大量修改,以致需要修改产品代号的产品升级活动。下表总结了每一种升级方式所做的产品修改内容以及每种升级方式可能使用的分发载体形式。

    在某种程度上,您可以将一个小型升级看作是一个“热修补”或者“快速修补工程”(Quick Fix Engineering,QFE)升级,将次要升级看作服务包,而将主要升级看作是产品升级。

    除了次要升级会改变产品版本号而小型升级不会改变版本号之外,小型升级和次要升级可以被认为是基本相同的。它们所遵循的原则和补丁程序都是相同的。小型升级和次要升级的应用程序都需要进行明确的重新安装。主要升级则不受此限制,补丁程序不需要重新安装。此外,小型升级和次要升级的补丁程序对程序包的功能组件结构所做的修改比较有限。而主要升级则会对程序的功能组件结构进行显著的修改。
     
    问: 什么时候补丁程序会需要原始源文件?
    答: Windows Installer 2.进行了大量改进,以便将补丁程序需要原始源文件的次数降低到最少。但是,在以下一些特殊情况下,它仍然会需要原始源文件:

    ? 应用于某个功能特性的补丁当前正在源文件中运行。在这种情况下,该特性会从“run-from-source”状态过渡到本地状态。
     
    ? 需要应用补丁的组件出现了问题(文件丢失或者受到损害)。
     
    ? 需要应用补丁的文件在一个组件之中,该组件还包含一些与版本变化无关的文件,并且没有MsiFileHash项目。需要一个经过填充的MsiFileHash表,以防止从源位置重新复制这些与版本变化无关的文件。
     
    ? 补丁应用时带有一个值为“amus”的REINSTALLMODE选项。该选项比较危险,因为它会忽略文件的版本对文件进行复制。从而导致对较早的文件进行修订,所以它总是需要源文件。我们建议将REINSTALLMODE的值设置为“omus”。
     
    ? 产品的缓存程序包丢失了。经过缓存的程序包对于补丁程序来说是必需的。这个缓存下来的程序包存储在“%windir%/Installer”文件夹中。
     
    ? 程序包被设计为需要调用ResolveSource操作。该操作一般应该被尽量避免,或者仅仅用在某些特定的条件下,因为执行该操作总是会导致系统访问源文件。
     
    ? 程序包拥有一个定制操作,该操作试图通过某种方式访问源文件。
     
    ? 补丁程序包由二进制的补丁文件组成,这些文件不能应用到计算机文件的当前版本之上。请看以下示例:

    1.
     安装示例产品的RTM版本。这会将1.0版本的Example.dll安装到计算机中。
     
    2.
     在计算机上应用补丁程序qfe1.msp。该补丁将Example.dll的版本从1.0升级到1.1。
     
    3.
     新的补丁qfe2.msp已经发布,它可以将Example.dll升级到1.2版本。但是,该补丁仅仅适用于Example.dll的1.0版本,因为它是利用该产品的RTM制作生成的。1.2版本的Example.dll包括了Example.dll1.1版本中的所有修补,但是MSP是在RTM和QFE2映像间生成的。所以,如果在计算机上应用qfe2.msp,WindowsInstaller将需要访问原始的源文件。example.dll的二进制补丁不能应用到1.1版本上;它只能应用于1.0版本。这会使安装程序重新从原始的源文件位置复制1.0版本的example.dll,以便补丁能够成功得到应用。
     
     
     
    问: 我怎样才能防止我的补丁程序需要访问源文件?
    答: 目前,您还无法完全阻止补丁程序访问源文件,但是,以下步骤可以帮助您减少程序访问源文件的次数:

    ? 使用只包含完整文件的补丁。这使得补丁创建程序无需根据每个先前发布的补丁程序和产品的RTM版本创建二进制补丁。通过将PatchCreationProperties(补丁创建属性,PCP)文件的“Properties”(属性)表中的IncludeWholeFilesOnly属性的值设置为“1”,您可以轻松制作出仅仅包含完整文件的补丁。
     
    ? 确保您所有的定制操作都不会访问原始的源文件位置。
     
    ? 确保ResolveSource操作只有在特定条件中才会执行,或者根本不存在此操作。
     
    ? 为程序包中所有与版本变化无关的文件建立“MsiFileHash”表。WindowsInstallerSDK包括了一个名为“MSIFiler.exe”的工具和一个名为“Wifilver.vbs”的脚本,它们可以自动完成这项工作。
     
     
    问: 为什么虽然我的补丁成功应用到了计算机上,但是文件却没有被升级?
    答: 这很可能是因为您简单地双击了一个小型或次要升级补丁。小型升级或者次要升级的补丁程序需要对将要升级的文件执行一次明确的重新安装过程。您可以使用MSIExec命令行完成这个工作,并且将REINSTALL和REINSTALLMODE属性包括在命令行命令之中(也就是:msiexec /p {path to my patch.msp} REINSTALL=ALL REINSTALLMODE=omus)。另一种方法是:在补丁中包括一个定制操作,对REINSTALL和REINSTALLMODE属性进行相应的设置。您应该确信您对该操作的执行条件进行了严格的限制,只在补丁程序的第一次应用期间执行。产品的后续重新安装不应该导致该定制操作的执行,否则您的产品可能会变得无法卸载。其它方法包括使用一个启动执行文件并利用正确的属性设置调用MsiApplyPatch,或者使用Windows Installer自动化对象,使用脚本编写补丁应用程序。
     
    问: 我能通过补丁升级一个定制操作吗?
    答: 可以,您可以使用补丁升级某个定制操作。如果定制操作包括在 “Binary”(二进制)表中,那么您可以简单地对升级安装映像中的定制操作进行升级。如果您使用原始文件和升级安装映像制作补丁程序,该补丁将包含一个数据库转换,将老的二进制数据流转换成新的二进制数据流。
     
    问:
    答: 

    故障处理
    问: 我如何才能找出程序包安装失败的原因?
    答: 有三种比较好的方法可以对程序包的安装问题进行跟踪。第一种方法是通过运行校验确信您的程序包合法有效。通过进行验证,您可以发现错误和警告,并找出一些常见的安装程序制作问题。有两个工具可以对安装程序包进行验证,这两个程序都可以通过Windows Installer SDK获得:MsiVal2和Orca。MsiVal2是一个用来校验程序包的命令行工具。Orca则为验证提供了一个图形化的用户界面,并且可以突出显示程序包中的无效实体。

    第二种方法是使用应用程序事件日志。Windows Installer会把成功和失败信息记录在应用程序事件日志当中。

    最后一种方法是生成一个详细日志文件。然后分析该详细日志文件,并从中找出错误的根源。Windows Installer SDK提供的WILogUtl.exe工具可以帮助您分析详细日志文件。 日志记录可以通过Windows Installer日志记录策略加以启用,或者,您也可以通过在MSIExec命令行中附加“/L*v path to logfile”来启用该功能。

    为了通过策略获得详尽的详细日志文件, 请使用如下注册表键:

    ? HKLM/Software/Policies/Microsoft/Windows/Installer
     
    ? 设置:Logging=REG_SZvoicewarmup
     
    ? 设置:Debug=REG_DWORD0x7
     

    通过策略键生成的日志文件将以msiXXXXX.log的格式存储在用户的“%temp%”文件夹中。

    注意:通过命令行产生的日志记录比所有的日志记录策略设置拥有更高的优先级。
     
    问: 在我每次启动程序的时候,Windows Installer都会执行安装操作。我怎样确定产生这种按需安装的原因是什么?
    答: 有一种方法可以容易地确定引起按需安装的原因,那就是:在应用程序事件日志中查找以下格式的MsiInstaller日志信息:

    事件类型:警告
    事件来源:MsiInstaller
    事件ID:1001
    描述:检测产品'{000C1109-0000-0000-C000-000000000046}',特性'Example'在请求组件'{00030829-0000-0000-C000-000000000046}'时发生失败

    事件类型:警告
    事件来源:MsiInstaller
    事件ID:1004
    描述:检测产品'{000C1109-0000-0000-C000-000000000046}',特性'Example',组件'{00030829-0000-0000-C000-000000000046}'失败。资源'C:/ProgamFiles/example/example.exe'不存在。

    第一条信息(事件ID为1001)说明了哪一个组件正在被安装。此处列出的组件是在针对特殊快捷方式的Shortcut(快捷方式)表中的Component(组件)列中所指定的组件。

    第二条信息(事件ID为1004)指出了哪一个组件在检测时发生失败。WindowsInstaller2.0经过改进的事件日志功能已经对信息进行了更新,以便在大多数情况下,用户都可以通过事件信息查找出导致检测失败的真正问题根源。如果组件的键路径(Keypath)丢失或者受损,可能会导致用户重新安装程序。

    在上例中,用户需要重新安装程序,因为资源“c:/ProgramFiles/example/example.exe“不存在。您应该找出导致键路径不存在的原因所在--在本例中,是因为用户删除了该文件。
     
    问: 我如何才能找出程序包安装失败的原因?
    答: 有三种比较好的方法可以对程序包的安装问题进行跟踪。第一种方法是通过运行校验确信您的程序包合法有效。通过进行验证,您可以发现错误和警告,并找出一些常见的安装程序制作问题。有两个工具可以对安装程序包进行验证,这两个程序都可以通过WindowsInstallerSDK获得:MsiVal2和Orca。MsiVal2是一个用来校验程序包的命令行工具。Orca则为验证提供了一个图形化的用户界面,并且可以突出显示程序包中的无效实体。

    第二种方法是使用应用程序事件日志。WindowsInstaller会把成功和失败信息记录在应用程序事件日志当中。

    最后一种方法是生成一个详细日志文件。然后分析该详细日志文件,并从中找出错误的根源。WindowsInstallerSDK提供的WILogUtl.exe工具可以帮助您分析详细日志文件。日志记录可以通过WindowsInstaller日志记录策略加以启用,或者,您也可以通过在MSIExec命令行中附加“/L*vpathtologfile”来启用该功能。

    为了通过策略获得详尽的详细日志文件,请使用如下注册表键:

    ? HKLM/Software/Policies/Microsoft/Windows/Installer
     
    ? 设置:Logging=REG_SZvoicewarmup
     
    ? 设置:Debug=REG_DWORD0x7
     

    通过策略键生成的日志文件将以msiXXXXX.log的格式存储在用户的“%temp%”文件夹中。

    注意:通过命令行产生的日志记录比所有的日志记录策略设置拥有更高的优先级。
     
    问: 我怎样才能确定Windows Installer是否安装了我的功能特性或组件?
    答: 确定WindowsInstaller是否安装了某个特定功能或组件的方法十分简单。您可以通过WindowsInstaller的verbose日志文件找到答案。您首先需要查找的是InstallValidate操作的日志信息。该操作将会把程序包中每个功能和组件的安装、请求和操作状态记录下来。

    MSI(s)(5C:F4):执行操作:InstallValidate
    操作开始1:51:18:InstallValidate.
    MSI(s)(5C:F4):功能:Example;安装:缺席;请求:本地;操作:本地
    MSI(s)(5C:F4):组件:Example;安装:缺席;请求:本地;操作:本地
    操作结束1:51:18:InstallValidate.返回值1.

    在上述日志文件片断中“Example”功能将在本地进行安装,因为它的操作状态为“本地”此外,组件“Example”也将根据给定的操作状态进行本地安装。
     
    问: 为什么我的文件在卸载过程中没有被删除?
    答: 产生这个问题的原因主要有四种:

    1.
     这些文件所属的组件被标记为“永久”(permanent)。(这一点可以通过Component表的Attributes列来实现)
     
    2.
     这些文件所属的组件没有一个拥有组件GUID。(位于Component表的ComponentId列的该值为NULL)。WindowsInstaller无法管理那些没有GUID的组件。
     
    3.
     如果组件的键路径(keypath)拥有一个共享的DLLrefcount,那么该组件将不能被卸载。
     
    4.
     如果该组件安装在系统文件夹中,而且在程序卸载之时,组件中的某一个文件拥有一个外部共享的DLLrefcount,那么该组件将不能被卸载。
     
     
    问: 为什么我的文件夹在程序卸载时没有被删除?
    答: 导致文件夹在程序卸载过程中不能被删除的原因主要有以下几种:

    ? 在同时使用CreateFolder表和CreateFolders操作时,执行顺序表中的RemoveFolders操作丢失。
     
    ? 该文件夹不是由Windows Installer创建的文件夹,因此它不会删除它们,除非您告诉Windows Installer删除这些文件夹。
     
    ? 文件夹中仍然存在资源。
     
     
    问: 为什么我的注册表键在程序卸载是没有被删除?
    答: 导致程序卸载时注册表键没有被删除的最常见原因有以下几种:

    1.
     Registry(注册表)表包含了带有“+”标记的实体。该符号将指示Installer在卸载程序时保留这些注册表键。
     
    2.
     在InstallExecuteSequence表中,RemoveRegistryValues操作位于UnregisterProgIdInfo和 UnregisterMIMEInfo操作之后。您需要反转这些操作的顺序。Registry表所写入的某些注册表键值会阻止特定的ProgId、扩展和CLSID 键被删除。
     
     
    问: 为什么安装过程所占用的磁盘空间远远大于我实际安装的文件尺寸?
    答: WindowsInstaller会计算两种类型的磁盘占用:带有回滚操作的磁盘占用;以及没有回滚操作的空间占用。没有回滚的空间占用是程序安装实际占用的磁盘空间。带有回滚操作的空间占用包括了在安装过程中为回滚操作提供支持所需的备份文件所占用的空间。此外,WindowsInstaller还会计算出执行安装操作所需的一些额外空间占用。其中包括安装脚本所需占用的空间以及缓存程序包的空间需求。此外,在安装期间,Installer需要对安装程序包进行临时复制。安装脚本和程序包运行副本所占用的空间是临时性的。在安装结束之后,这些文件将会被清除。请看以下示例,在本例中,您的安装程序包的大小约为80KB,而您正在安装一个4KB的文件。(注意:根据硬盘簇大小的不同,您的数字与我的可能会有所不同):

    89120字节(被缓存的MSI,基本上是4KB簇大小的整数倍)
    89120字节(MSI的临时工作副本)
    8192字节(估计的脚本大小)
    4096字节(小文件,与大小为4KB磁盘簇基于相等)
    --------------------------------------
    176128字节=172KB
     
    问: 为什么Windows Installer提示我重新启动计算机?
    答: 如果WindowsInstaller需要覆盖一个正在使用的文件,或者安装程序包明确要求Installer重新启动计算机,那么WindowsInstaller将会提示您重新启动。我们可以很容易地判断出WindowsInstaller是否是因为需要覆盖一个正在使用的文件而提示您重新启动计算机。我们首先需要生成一个详细日志文件。在这个详细日志文件中,在属性部分中查找是否存在ReplacedInUseFiles属性。如果该属性存在,并且值为1,那么Installer将会因为需要覆盖一个正在使用的文件而提出重新启动计算机的请求。

    为了确定哪一个文件正在被使用,请扫描日志文件,查找“Info1603”和“Info1903”信息1603信息由InstallValidate操作记录在日志文件中。例如:

    MSI(s)(DC:DC):执行操作:InstallValidate
    操作开始19:55:42:InstallValidate.

    Info1603.文件“d:/test/sample.exe”正在被以下进程使用:名称:sample.exe,Id:4068,窗口标题:‘Sample’。请关闭该程序,然后再试。

    一般情况下,出现该消息的同时,也会出现“FilesInUse”(文件正在使用)对话框。但是在使用“安静”UI的情况下,该对话框不会出现。此外,并不是所有正在被使用的文件都会出现在“FilesInUse”对话框中。如果处于使用状态的文件不是一个可执行文件,持有这些文件的进程是一个与安装过程有关的进程,或者持有文件的进程没有一个与之相关的窗口标题,“FilesInUse”对话框都可能不会显示。

    安装脚本中的FileCopyopcode也会将Info1603信息记录在日志中。在上例中,日志文件包含:

    MSI(s)(DC:DC):Executingop:FileCopy(SourceName=sample.exe,SourceCabKey=sample.exe,DestName=sample.exe,Attributes=0,FileSize=2044928,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=2.0.2600.0,Language=0,InstallMode=59244544,,,,,,)

    Info1603.文件“D:/test/sample.exe”正在被使用。请关闭程序然后再试。

    在文件清理期间的脚本末尾,以下日志文件信息将指出要求用户重新启动计算机的“元凶”:

    Info1903.设定重启日程:删除文件“D:/Config.Msi/12544a31.rbf”。您必须重新启动以完成操作。

    尽管文件名为“12544a31.rbf”,但实际上它是“Sample.exe”文件。为了安装文件,正在使用的文件会被重新命名为.rbf文件,然后在重新启动后被删除。
     
    问: “ERROR_INSTALL_PACKAGE_VERSION 错误(1613)是什么意思?
    答: “ERROR_INSTALL_PACKAGE_VERSION”错误表示:计算机上的WindowsInstaller不支持本程序包的架构。程序包架构由程序包摘要信息流中的PID_PAGECOUNT属性指出。如果程序包的架构号大于WindowsInstaller所能够支持的最大架构,您就需要升级WindowsInstaller的版本或者重新制作该安装程序包,利用较早期的架构对其进行编译。

    所有版本的MSI所支持的最小架构号为30。

    每个版本的MSI所支持的最大架构号如下:

    ? WindowsInstaller1.0:100
     
    ? WindowsInstaller1.1:110
     
    ? WindowsInstaller1.2:120
     
    ? WindowsInstaller2.0:200
     
     
    问: 在我用系统账户启动一个安装过程的时候,我得到了编号为2103的错误信息,这是为什么?
    答: 从系统账户(例如计划任务服务)启动程序安装可能会导致2103错误。如果您进行的是一个针对用户的安装,这种情况就会发生。只有针对计算机的安装才能够使用系统账户,因为系统账户不能够对所有必要的用户配置文件夹进行访问。
     
    问: 在我从终端服务器上的一个映射驱动器进行安装的时候,为什么出现了2755错误?
    答: Windows 2000和更早期的操作系统不支持在终端服务器会话间传递映射驱动器盘符信息。因为Windows Installer服务是在控制台会话中作为一个服务运行,在远程会话中建立的映射驱动器盘对于Windows Installer服务来说是不可见的,从而导致了本错误的出现。只有服务运行于应用程序服务器模式下时才会出现本错误,在远程管理(Remote Admin)模式下不会出现。

    注意:Windows XP以及其后的操作系统不存在此限制。
     
    问: 在我安装一个使用Web下载启动文件的程序包时,我为什么会得到一个安全性警告对话框,对话框中的消息称“访问在线撤销服务器时发生错误”?
    答: 安全性警告对话框之所以会出现,是因为在Web下载启动文件(Setup.exe)执行数字签名验证的过程中发生了问题。我们已经通过Windows Installer SDK提供的最新示例代码解决了这个问题,该SDK可以从Microsoft Download Center获得。您只需要使用工具对Setup.exe进行简单的重新配置即可。您可以从SDK Update站点下载该经过修正的示例代码。
     

    展开全文
  • DirectX修复工具常见问题解答

    万次阅读 2013-10-12 09:55:11
    经常有人在网上发帖询问DirectX修复工具的一些问题,但是有些问题的回答并不够准确。因此作者在这里把一些常见问题列出,供大家参考。 问题1:XP系统上运行软件时出现0xc0000135的错误,怎么回事? 答:Windows ...
  • WINDOWS常见问题的最佳解决方案

    万次阅读 2006-03-09 00:14:00
    WINDOWS常见问题的最佳解决方案1、电脑为什么关机后又自动重启动?答: 电脑关机后自动重启的原因最常见的是由快速关机引起的。解决办法是:①开始/运行/输入:msconfig/确定/系统实用配置程序/高级/选中“禁用快速...
  • 常见主机漏洞及修复方案

    万次阅读 2018-09-20 09:31:38
    1、openssh累积型漏洞 高 cve...修复意见: 升级版本至>=openssh-5.3p1-122.el6   2、NTP累积型漏洞 高 修复意见: 稳定版请尽快安装ntp-4.2.8p4以后版本  开发版请尽快安装ntp-4.3.77以后版本 ...
  • windows下git服务器搭建及常见问题

    千次阅读 2016-10-13 17:35:04
    Windows+Git+TortoiseGit+COPSSH 安装图文教程 准备工作: 1、 Git-1.8.1.2-preview20130201.exe 下载地址: https://code.google.com/p/msysgit/downloads/list 2、 Copssh_4.1.0_Installer.exe 下载地址: ...
  • WINDOWS常见问题,供大家参考

    千次阅读 2004-07-04 20:05:00
    常见问题,供大家参考 如何关闭端口方法一:网上邻居->属性->本地连接->属性->INTERNET协议(TCP/IP)->属性->高级->选项T->CP/IP筛选->属性,在里面进行修改就可方法二:还可以在防火墙中设置,如NORTON 关于浏览器...
  • 常见绿盟扫描主机漏洞及修复方案

    千次阅读 2020-06-11 11:29:25
    建议升级openssl来进行修复,openssl-0.98m之后的版本就已经修复了该漏洞,使用了Secure Renegotiation。 2、SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808) 中 修复意见: 对于NGINX的修补 修改nginx配置...
  • mac 更新win10的一些问题. bootcamp6的更新错误 经常出现自动休眠 键盘功能键不好使,音量加减,亮度加减 bootcamp 更新失败 显卡效率低下,无法正常玩游戏 bootcamp没有正常更新
  • 常见的解决办法,没有什么问题是重启重装解决不了的。重装系统步骤就需要先下载U深度或大白菜做U盘启动盘,修改bios,以u盘的方式启动,保存C盘文件之后,进行系统重装即可。 方法二:重置电脑 全新的界面设计 ,...
  • DirectX修复工具在线修复

    万次阅读 多人点赞 2012-03-26 20:23:47
    DirectX修复工具最新版:DirectX Repair V3.9 在线修复版NEW! 版本号:V3.9.0.29371 大小: 971KB/7z格式压缩,2.63MB/ZIP格式压缩,5.62MB/解压后 其他版本:标准版增强版 MD5校验码(校验工具下载): ...
  • 该文档回答了有关 Microsoft Windows XP Embedded 操作系统的常见技术问题。点击此处阅读全文
  • 修复常见ACPI问题(DSDT等)

    千次阅读 2017-09-06 16:46:14
    参考文章: ...  说明:这篇文章写于2004年,作者主要是针对Linux内核进行一些DSDT相关修复,但文章内容对于理解DSDT非常有益,这里翻译DSDT相关的内容,供参考。内容上有一些删减和增添。   1
  • 负责说明磁盘上的分区情况,其内容由磁盘介质用户在使用FDISK定义分区时决定。 (3):结束标志(占2个字节) 其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。 3.主引导分区的读取流程...
  • DirectX修复工具增强版

    万次阅读 多人点赞 2012-02-09 13:26:54
    DirectX修复工具最新版:DirectX Repair V3.9 增强版NEW! 版本号:V3.9.0.29371 大小: 111MB/7z格式压缩,196MB/zip格式压缩,345MB/解压后 其他版本:标准版 在线修复版 MD5校验码: DirectX Repair.exe/eeab...
  • Windows常见进程

    千次阅读 2009-11-26 15:42:00
    运行,用scanreg/restore 命令来恢复注册表,(如果不会的或者是XP系统不能用的可以用瑞星注册表修复程序之类的软件修复一下注册表),重启后进到WINDOWS桌面用杀毒软件(本人用金山毒霸2006)全面杀毒,清除余下的病毒!...
  • SQLServer常见的错误及修复方法

    千次阅读 2011-05-04 11:53:00
    下面我就把一些常见的错误及修复方法列出来:   下面提及的命令都是通过sql查询分离器执行的!   错误一:Error Message:未能找到存储过程 'master..xp_cmdshell'。 修复方法: 第一步先删除: ...
  • 关于Windows Vista的系统修复

    千次阅读 2007-12-31 09:43:00
    在隆重介绍Windows Vista的强大恢复功能之前,首先要宣布一个令人“伤感”的消息─从Windows 2000开始一直是系统排错中坚力量的故障恢复控制台,现在终于功成身退了!取而代之的是一个特别版本的Windows PE。Windows...
  • Windows XP启动过程及常见启动故障

    千次阅读 2009-03-18 15:27:00
    一、Windows XP系统在磁盘上的组织 安装XP过程中,Windows安装系统会在计算机的磁盘分区写入引导相关的组件,分别置放于系统卷(system volume)启动卷(boot volume)。 一个硬盘一般有两种分区方式:一是四个主分区,...
  • 用 DISM 命令修复 Windows 8 系统

    千次阅读 2017-05-03 09:56:06
    用 DISM 命令修复 Windows 8 系统  Windows 8 系统文件损坏,无法自动修复的解决方法:一、检查映像是否可修复 1.扫描映像来检查损坏。在管理员命令提示符下键入以下命令:Dism /Online /Cleanup-...
  • DirectX修复工具

    万次阅读 多人点赞 2011-11-12 11:10:55
    最后更新:2019-9-5 For English version, ...DirectX修复工具最新版:DirectX Repair V3.9 标准版NEW! 版本号:V3.9.0.29371 大小: 30.7MB/7z格式压缩,98.7MB/zip格式压缩 ,231MB/解压后 其他版本:增强版 在...
  • 修复windows installer安装错误

    千次阅读 2015-06-12 22:55:05
    微软出了一个官方的安装修复工具Microsoft Fixit,可以修复常见的 ”安装程序在指定路径或磁盘上找不到文件“ ”请检查是否插入了正确的磁盘或指定新路径“ ”无法定位文件“ 等问题 下载地址 ...
  • WINDOWS2000启动故障修复方案

    千次阅读 2006-01-16 19:04:00
     这个是第一个要问客户或自己的问题,比如:是否安装了新的驱动程序、系统补丁或新硬件,通常我会得到一些非常有用的信息,因为以上操作经常是引起系统不能启动的元凶。 透过现象看本质 Windows 2000
  • 很多人都会用sfc /scannow来解决系统文件损坏的问题,但有时也会遇到连sfc都无法修复的情况,最常见的就是出现“Windows 资源保护找到了损坏文件但无法修复其中某些文件 CBS.Log windir\Logs\CBS\CBS.log中有详细...
  • 这是windows7中常见问题,下面介绍的就是它的问题原因解决方法。 问题原因解决方法 也许开机时看见一团不知道什么意思的英文,大脑一定是懵逼的,想着电脑是不是坏了,数据没了怎么办。 但是遇见此...
  • 一次windows server 2003系统修复过程

    千次阅读 2013-06-01 00:09:54
    我觉得这个问题比较常见,所以想着记录下来,或者有备于自己将来参考。首先,介绍一下系统出现的问题。此服务器上有一个财务系统,不知是何原因出现故障,显示软件为试用版本,经软件供应商查看之后,供应商要求朋友...
  • ssl ssh 常见 漏洞修复

    千次阅读 2019-08-22 13:35:20
    openssl-1.0.2分支的1.0.2i后续版本 openssl-1.1.0分支的1.1.0a后续版本 openssl-1.0.1分支的1.0.1u后续版本 CVE-2016-2183 SSL/TLS协议信息泄露漏洞 ref: ...
  • WMI常见问题及解决方法

    万次阅读 2016-06-06 17:06:35
    常见问题及解决方法  1. 当通过WMI添加服务器、Microsoft .NET、Exchange服务器时,提示“验证失败。请确认用户名和密码”。  解决方法: 请以\格式输入用户名  注意: OpManger中对于本地WMI验证,不需要输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,172
精华内容 16,868
关键字:

windows常见问题及修复