zoukankan      html  css  js  c++  java
  • How to Edit INF File?

    1.Introduction
    INF文件全称Information File文件,是Winodws操作系统下用来描述设备或文件等数据信息的文件。INF文件是纯文本文件,由标准的ASCII码组成。一般我们总是认为INF文件是系统设备的驱动程序,其实这是错误的认识,Windows之所以在安装某些硬件的驱动时提示需要INF文件是因为INF文件为该设备提供了一个全面描述硬件参数和相应驱动文件(DLL文件)的信息。就好比我们看着说明书安装电脑硬件一样,我们就是Windows系统,说明书就是INF文件。INF文件功能非常强大,几乎能完成日常操作的所有功能。您可以把它看成是Windows系统底下的超强批初理。


    2.Features of INF

    1 复制文件、删除文件、或重新命名文件。
    2 新增或删除注册表(Registry)中的项目。
    3 修改重要的系统设置文件(如 Autoexec.bat、Config.sys、.INI 等)


    3.Rules of INF

      *规则一:INF文件是分节的,每一个INF文件有许多的节组成,节名用方括号"[]"括起来。这些节名有些是系统定义好的,有一些是用户自定义的。每一个节名最长为255个字符(Windows 2000/XP/2003操作系统中)或28个字符(Windows 98操作系统中)。节与节之间没有先后顺序的区别,另外,同一个INF文件中如果出现两个同样的节名,则系统会自动将这两个节名下面的条目合并到一起。

      *规则二:在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都是由=分开,形如“signature="$CHICAGO$"”的形式组成的。如果每一个条目的等号后有多个值,则每一个值之间用“,”号分隔开。

      *规则三:INF文件对大小写不敏感。

      *规则四:“;”号后面的内容为注释。

      *规则五:如果一个条目的内容过多,在一行无法书写完全,则用“\”将一行内容书写为多行。


    4.INF的运行

     
    .INF文件是由Windows的SetupAPI解释执行的脚本文件,它的运行过程很简单,是一种线性的执行,线性的意思就是.INF文件的运行过程不存在分支语句,也就是没有条件语句,一旦开始执行,就是沿着固定的路线运行。它的运行是按照节为单位来执行的,从某一个[Install]节开始执行,从上到下执行该节中的条目,如果该条目是一个节,那么就一条条执行子节中的条目,如此递归执行。在WINDOW上运行只要右击这个文件,点击安装即可。

    5.Version of INF
    .INF文件的语法是统一的分节语法,随着操作系统的更新,微软逐渐增加了一些必要的关键字,但是整个的.INF文件的结构不会变化。从语法上来说,.INF文件都是一个类别。
    按照.INF文件的版本来分类,可以分为2类:
    1 AdvancedINF,在[Version]节中有“AdvancedINF=2.5,"您需要新版本的 AdvPack.dll" ”这么一行语句,表明此.INF文件需要AdvPack.dll这个动态链接库来解释执行,AdvancedINF有一些高级特性,但是在目前用的不太多。
    2 普通INF,没有指明需要AdvPack.dll的.INF文件,使用SetupAPI.DLL来解释执行(win9x系列的操作系统使用Setupx.dll),系统中缺省使用的就是这种普通INF。


    2.Structure
    INF文件的组成有节(Sections),键(Key)和值(value)三部分。 
    关键节有 
    [Version]版本描述信息,主要用于版本控制。 
    [Strings]字符串信息,用于常量定义。 
    [DestinationDirs]定义系统路径信息。 
    [SourceDisksNames]指明源盘信息。 
    [SourceDisksNames]指明源盘文件名。 
    [DefaultInstall]开始执行安装。 
    其它的节可以自定义,下面用一实例来具体讲解。

    程序代码 
    [Version] 
    Signature
    =$Chicago$ 
    Provider
    =%Author% 

    [Strings] 
    Product
    ="添加文件关联演示" 
    Version
    ="1.0" 
    Author
    ="Xunchi" 
    Copyright
    ="Copyright 2005" 
    CustomFile
    ="inf" ;修改您需要的文件名后缀 
    Program="NOTEPAD.EXE" ;修改您需要关联的应用程序名 

    [Add.Reg] 
    HKCR
    ,"."%CustomFile%,"",FLG_ADDREG_TYPE_SZ ,%CustomFile%File 
    HKCR
    ,%CustomFile%File,"",FLG_ADDREG_TYPE_SZ,安装信息 
    HKCR
    ,%CustomFile%"File\shell","",FLG_ADDREG_TYPE_SZ,open 
    HKCR
    ,%CustomFile%"File\shell\open\command","",FLG_ADDREG_TYPE_SZ,%program% %1 

    [DefaultInstall] 
    AddReg
    =Add.Reg 

      在
    [Version]节中"Signature"项定义了该INF文件需要运行在何种操作系统版本中。有$Windows NT$, $Chicago$, or $Windows 95$三个值供选择,一般选择$Chicago$即可。项Provider中定义了该文件的创作来源,%Author%指引用Author项的值。您也可自定其它项来描述该INF文件的版本信息。该INF文件的作用是关联文件,所以主要是对注册表的操作,我们来看[Add.Reg]节,共四条语句,格式都是一样。HKCR表示根HKEY_CLASSES_ROOT,第二个参数是子键的路径名,第三个参数是表明值的类型,最后是值(具体见附表)。以上都是对操作的定义与过程,在节[DefaultInstall]中是开始执行要安装的流程,AddReg表明是对注册表进行操作,操作对象是Add.Reg节中的定义。如果您把AddReg换成DelReg则是删除注册表中的键值。当鼠标单击该INF文件在弹出的菜单中选择“安装”就开始执行您所定义的操作。该示例在系统的INF文件右键菜单中增加了查看编辑功能并设置了默认动作,因为在安装了不了解的INF文件有可能对系统产生不良的影响,这样双击文件就可打开编辑该文件了。 


    再看看INF文件在文件操作方面的能力吧。请看下面的一个例子。 

    程序代码 
    [Version] 
    Signature
    =$Chicago$ 
    Provider
    =%Author% 
    [Strings] 
    Product
    ="文件复制和安装演示" 
    Version
    ="1.0" 
    Author
    ="Xunchi" 
    Copyright
    ="Copyright 2005" 

    [FileList] 
    ProcessList.exe 
    ;此文件已在当前目录下,下同。 

    [FileList1] 
    Wordpad.exe 
    [DestinationDirs] 
    FileList
    =11 ;安装到Windows的系统目录 
    FileList1=10 ;安装到Windows目录 
    [DefaultInstall] 
    Copyfiles
    =FileList,FileList1 

      相同的节的作用与上一例类似,请注意新出现的节
    [FileList],这是我自定义的节名,它表示了一个文件组,[FileList1]也类似。在节[DestinationDirs]中需定义每个文件组复制到的目录(各个常量的意义见附表)。Copyfiles指明了需要进行复制的文件组。 
      INF文件的操作还包括服务(NT系统)程序的安装和卸载,INI文件的转换等。由于这些操作都比较的复杂和繁琐,且有一定的危险性故下次有机会再向大家进行深入探讨。 
      最后我们来看一下INF文件的执行机制,这时你也许要问不就是简单的执行一下“安装”吗?知其然不知其所以然知识水平是不会提高的。在“文件夹选项”中的“文件类型”找到INF文件的“安装”命令看到一串命令。“rundll32.exe setupapi
    ,InstallHinfSection DefaultInst_all 132 %1”它表示了运行Dll文件setupapi.dll中的命令InstallHinfSection并传递给它起始节的名字 DefaultInstall。可见起始节是可以自定义的。INF文件的执行也可用在各种支持API调用的编程工具中。至此INF文件的结构和运行机制我们已基本了解,现在就让你的思维开动起来,让它更好的为我们工作吧。 


    注册表操作的常量定义: 
    ---------------------------------------------------------- 
    常量 根值 
    HKCR HKEY_CLASSES_ROOT. 
    HKCU HKEY_CURRENT_USER. 
    HKLM HKEY_LOCAL_MACHINE. 
    HKU HKEY_USERS. 
    ----------------------------------------------------------- 
    FLG_ADDREG_APPEND 在多字符串后添加字符 
    FLG_ADDREG_TYPE_SZ 字符类型 
    FLG_ADDREG_TYPE_MULTI_SZ 字符串类型 
    FLG_ADDREG_TYPE_EXPAND_SZ 扩展字符串类型 
    FLG_ADDREG_TYPE_BINARY 二进制值 
    FLG_ADDREG_TYPE_DWORD DWord值 
    FLG_ADDREG_TYPE_NONE NULL值 
    ---------------------------------------------------------- 


    [DestinationDirs]节中所定义的常量路径 
    ---------------------------------------------------------- 
    01 源目录(后跟路径) 
    10 Windows目录 
    11 Windows系统目录 
    12 驱动目录 
    17 INF文件目录 
    18 帮助文件目录 
    20 字体目录 
    21 根目录 
    24 应用程序目录 
    25 共享目录 
    30 当前根目录 
    50 System目录 
    51 Spool 目录 
    52 Spool 驱动目录 
    53 用户配置目录 
    ---------------------------------------------------------- 

    [DefaultInstall]节中定义的操作 
    ---------------------------------------------------------- 
    LogConfig Log日志文件配置 
    Copyfiles 复制文件 
    Renfiles 文件改名 
    Delfiles 删除文件 
    UpdateInis 更新Inis 
    UpdateIniFields 更新Ini字段 
    AddReg 添加注册项 
    DelReg 删除注册项 
    Ini2Reg Ini文件转换为Reg文件 
    ----------------------------------------------------------- 


    INF文件应用示例
    一、修改telnet服务,端口改为99,NTLM认证方式为1。 
    =============================== 
     

    C:\myinf\Telnet.inf 

    [Version] 
    Signature
    ="$WINDOWS NT$" 
    [DefaultInstall] 
    AddReg
    =AddRegName 
    [My_AddReg_Name] 
    HKLM
    ,SOFTWARE\Microsoft\TelnetServer\1.0,TelnetPort,0x00010001,99 
    HKLM
    ,SOFTWARE\Microsoft\TelnetServer\1.0,NTLM,0x00010001,1 

    安装:rundll32.exe setupapi
    ,InstallHinfSection DefaultInstall 128 c:\myinf\telnet.inf 

    说明:
    [Version][DefaultInstall]是必须的,0x00010001表示REG_DWORD数据类型,0x00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0x00020000表示REG_EXPAND_SZ。 
    InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号,没有空格。128表示给定路径,该参数其他取值及含义参见MSDN。 
    特别注意,最后一个参数,必须是inf文件的全路径,不要用相对路径。 
    inf文件中的项目都是大小写不敏感的。 

    二、服务 
    =============== 

    增加一个服务: 

    [Version] 
    Signature
    ="$WINDOWS NT$" 
    [DefaultInstall.Services] 
    AddService
    =inetsvr,,My_AddService_Name 
    [My_AddService_Name] 
    DisplayName
    =Windows Internet Service 
    Description
    =提供对 Internet 信息服务管理的支持。 
    ServiceType
    =0x10 
    StartType
    =2 
    ErrorControl
    =0 
    ServiceBinary
    =%11%\inetsvr.exe 

    保存为inetsvr.inf,然后: 

    rundll32.exe setupapi
    ,InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf 

    这个例子增加一个名为inetsvr的服务(是不是很像系统自带的服务,呵呵)。 

    几点说明: 
    1,最后四项分别是 
    服务类型:0x10为独立进程服务,0x20为共享进程服务(比如svchost); 
    启动类型:
    0 系统引导时加载,1 OS初始化时加载,2 由SCM(服务控制管理器)自动启动,3 手动启动,4 禁用。 
    (注意,0和1只能用于驱动程序) 
    错误控制:
    0 忽略,1 继续并警告,2 切换到LastKnownGood的设置,3 蓝屏。 
    服务程序位置:%
    11%表示system32目录,%10%表示系统目录(WINNT或Windows),%12%为驱动目录system32\drivers。其他取值参见DDK。你也可以不用变量,直接使用全路径。 
    这四项是必须要有的。 
    2,除例子中的六个项目,还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。 
    3,inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。 

    删除一个服务: 

    [Version] 
    Signature
    ="$WINDOWS NT$" 
    [DefaultInstall.Services] 
    DelService
    =inetsvr 

    很简单,不是吗? 

    当然,你也可以通过导入注册表达到目的。但inf自有其优势。 
    1,导出一个系统自带服务的注册表项,你会发现其执行路径是这样的: 
    "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,
    74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,
    00,6c,00,6e,00,74,00,73,00,76,00,72,00,2e,00,65,00,78,00,65,00,00,00 
    可读性太差。其实它就是%SystemRoot%\system32\tlntsvr.exe,但数据类型是REG_EXPAND_SZ。当手动导入注册表以增加服务时,这样定义ImagePath显然很不方便。如果用REG_SZ代替会有些问题——不能用环境变量了。即只能使用完整路径。用inf文件完全没有这个问题,ServiceBinary(即ImagePath)自动成为REG_EXPAND_SZ。 
    2,最关键的是,和用SC等工具一样,inf文件的效果是即时起效的,而导入reg后必须重启才有效。 
    3,inf文件会自动为服务的注册表项添加一个Security子键,使它看起来更像系统自带的服务。 

    另外,AddService和DelService以及AddReg、DelReg可以同时且重复使用。即可以同时增加和删除多个服务和注册表项。 

    三、组策略 
    ========== 

    1、密码最小6位 
    [version] 
    signature
    ="$CHICAGO$" 
    [System Access] 
    MinimumPasswordLength 
    = 6 
    PasswordComplexity 
    = 1 

    保存为gp.inf,然后导入: 
    secedit /configure /db gp.sdb /cfg gp.inf /quiet 


    2、关闭所有的“审核策略 

    echo 
    [version] >1.inf 
    echo signature
    ="$CHICAGO$" >>1.inf 
    echo 
    [Event Audit] >>1.inf 
    echo AuditSystemEvents
    =0 >>1.inf 
    echo AuditObjectAccess
    =0 >>1.inf 
    echo AuditPrivilegeUse
    =0 >>1.inf 
    echo AuditPolicyChange
    =0 >>1.inf 
    echo AuditAccountManage
    =0 >>1.inf 
    echo AuditProcessTracking
    =0 >>1.inf 
    echo AuditDSAccess
    =0 >>1.inf 
    echo AuditAccountLogon
    =0 >>1.inf 
    echo AuditLogonEvents
    =0 >>1.inf 
    secedit /configure /db 
    1.sdb /cfg 1.inf /log 1.log /quiet 
    del 
    1.* 


    四、解决XP ipc$连接只有Guest权限 
    ==================== 

    echo 
    [version] >1.inf 
    echo signature
    ="$CHICAGO$" >>1.inf 
    echo 
    [Registry Values] >>1.inf 
    echo MACHINE\System\CurrentControlSet\Control\Lsa\ForceGuest
    =4,0 >>1.inf 
    secedit /configure /db 
    1.sdb /cfg 1.inf /log 1.log 
    del 
    1.*


    节的名称

    节的作用

    [Version]

    INF文件头,提供有效INF文件的版本信息

    [DefaultInstall]

    安装包含所关联动作(文件拷贝或删除,注册表键值更新、子键增删等)在INF文件内的节名指针,默认情况下首先执行该节内容

    [OtherInstall]

    与[DefaultInstall]节遵循相同的语法,但必须显式的调用,常被用来定义反安装动作

    [DestinationDirs]

    指定罗列于一个节内将被拷贝、删除或重命名的文件在硬盘上的位置

    [FileCopy/Delete/RenameSection(s)]

    罗列将被拷贝、删除或重命名的文件

    [RegistryUpdateSection(s)]

    指定对注册表键值更新、子键增删等动作

    [IniFileUpdateSection(s)]

    指定对ini文件的更新、快捷方式可通过该节进行创建

    [SourceDisksNames]

    罗列文件所在盘盘名、盘卷标、盘序列号

    [SourceDisksFiles]

    罗列安装时使用的源文件及其所在盘

    [Strings]

    罗列本地化字符串(或称宏字符串)


    表中黑体节名是保留关键字,名称固定,大小写不敏感,斜体节名名称任意,由INF文件编写者确定。每节的标题字符均用括号([])括起。 限于篇幅本文只对黑体节名做进一步的解释。

    [Version]节

    任何INF文件的第一个小节均是[Version],又称为INF文件头。一般有如下语句:

    [Version]
    Signature=“$Chicago$”
    LayoutFile=filename.inf

    其中,Signature的值应为“$Chicago$”、“$Windows 95$”或“$Windows NT$”中的一个(不区分大小写),否则Windows不接受该文件为INF文件,内建的动作也就不会起作用。

    filename.inf文件包含安装组件必需的安装布局信息(源盘和源文件),该行是可选的,如果没有提供布局信息文件,则在INF文件内必须包含[SourceDisksNames]和[SourceDisksFiles]节。

    [Install]节

    [Install]节提供了一个INF文件安装过程的总览,它识别文件内其他包含安装信息节的详细动作,是Windows内建安装函数识别安装过程和内容的真正入口,用户所有的安装目的在这里表现。那些与[Install]节内容不存在关联的节的动作将被忽略。

    [Install]节分[DefaultInstall]和[OtherInstall]两类,它们使用相同的格式。[DefaultInstall]节节名“DefaultInstall”如前面表格内容所述被显式地在注册表中指定,大小写不敏感。该节也是系统获取INF文件中安装信息的首要入口,当用户右击INF文件选“安装”时该节内容被执行。[OtherInstall]与[DefaultInstall]节遵循相同的语法,但必须被显式地调用,常被用来定义反安装动作。它们均可包括以下种类的可选入口:

    CopyFiles=[CopyFiles-section-name]file-list-section[,file-list-section]
    RenFiles=file-list-section[,file-list-section]
    DelFiles=file-list-section[,file-list-section]
    UpdateInis=update-ini-section[,update-ini-section]
    UpdateIniFields=update-inifields-section[,update-inifields-section]
    AddReg=add-registry-section[,add-registry-section]
    DelReg=del-registry-section[,del-registry-section]
    Ini2Reg=ini-to-registry-section[,ini-to-registry-section]
    UpdateCfgSys=update-config-section
    UpdateAutoBat=update-autoexec-section

    上面的入口并非都必需,如果需要一个入口,则应该在等号右侧指出存在于该INF文件内的索引节名(不用指出节名的一个特例是CopyFiles入口,可使用“@”字符后跟文件名的形式,效果是直接将文件拷贝到DestinationDirs节所罗列的硬盘目录)。节名需由可打印字符组成,在中文系统平台中,可使用中文字符作为节名,这也是体现INF格式安装本地化的地方,非常直观。每类入口在一个[Install]节内只能出现一次,第二次及以后出现的同名重复入口将被忽略。每类入口的等号右侧可罗列多个节名,节名之间以逗号分开,以便列举同一类动作的不同作用对象,如删除多个注册表键、拷贝文件到多个目录路径等。

    下表是各类入口的动作含义,具体语法本文不做细述:
     

    CopyFiles

    等号右侧是拷贝文件罗列节节名,将文件拷贝到DestinationDirs节指定的目的地,所有的源文件必须在SourceDisksFiles节列出

    RenFiles

    重命名文件

    DelFiles

    删除文件

    UpdateInis

    安装过程中更新INI初始化文件内容

    UpdateIniField

    安装过程中更新INI初始化文件值内容

    AddReg

    增加注册表键或键值

    DelReg

    删除注册表键或键值

    Ini2Reg

    用INI文件内容更新注册表

    UpdateCfgSys

    更新Config.sys文件内的设置

    UpdateAutoBat

    更新Autoexec.bat文件内的设置


    在实际编写INF文件时,注册表根键通常采用缩写方式,如下表:

    HKCR

    HKEY_CLASSES_ROOT的简写

    HKCU

    HKEY_CURRENT_USER的简写

    HKLM

    HKEY_LOCAL_MACHINE的简写

    HKU

    HKEY_USERS的简写

    HKR

    相对键,对于硬件设备驱动程序类安装的

    [DestinationDirs]节

    [DestinationDirs]节指定拷贝、重命名或删除文件三类动作的目的目录路径,拷贝、重命名或删除操作对象即文件的列表在专门的节中列出,这些节名最初在“Install”的CopyFiles、RenFiles或DelFiles入口中明确。
    [DestinationDirs]节内语句的语法为:
    file-list-section=LDID,[Subdir]
    [DefaultDestDir=LDID,[Subdir]]
    其中file-list-section为必选项,是CopyFiles、RenFiles或DelFiles入口内列出的节名。
    LDID(Logical disk identifier)为必选项,是逻辑盘标识码,代表各种系统或实时安装路径,逻辑盘标识码可看做一种宏字符串,随系统或实时安装路径的不同而相应改变。逻辑盘标识码机制确保了安装的灵活性和正确性,该标识码可为下表所述值之一:
    Subdir为可选项,指定LDID目录下的子目录名。
    DefaultDestDir为可选项,指定CopyFiles、RenFiles或DelFiles入口的缺省操作目录。

    [SourceDisksNames]节

    [SourceDisksNames]节罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。
    [SourceDisksNames]节内语句的语法为:
    disk-ordinal=“disk-description”,disk-label,disk-serial-number
    其中disk-ordinal为必选项,是盘符序列码,标识一个源盘,具有惟一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。
    disk-description为必选项,是盘描述符,用双引号括起的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。
    disk-label为源盘的卷标识。
    disk-serial-number未使用,但必须被设置为0。

    [SourceDisksFiles]节

    [SourceDisksFiles]节指定安装时使用的源文件和盘符序列码、盘描述符。 [SourceDisksFiles]节内语句的语法为:
    file-name=disk-number[,subdir] [,file-size]
    其中file-name为必选项,是源盘上文件的名称。
    disk-number是包含file-name指定文件所在源盘的盘符序列码,该盘符序列码需在[SourceDisksNames]节中列出,并大于或等于1。
    Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。
    file-size为可选项,表明文件的大小,以字节为单位。

    [Strings]节

    [Strings]节定义一个或多个本地化字符串,或称字符串宏。尽管[Strings]节一般被放置在INF文件的末尾,字符串宏可在INF文件任何地方使用,安装引擎解释、展开字符串宏为给定的长字符串并做进一步处理。字符串宏在使用时需用百分号(%)括起。[Strings]节内语句的语法为:
    strings-key=value
    其中strings-key为由字母或数字等可打印字符组成的宏名。
    Value为被双引号括起的长字符串,字符串可由字母、数字或其他可打印字符组成。

    一个具体的安装实例

    本文接下来列举一个名为“Mysetup.inf”的安装信息文件实例,以便读者熟悉INF文件语法,领略INF文件的安装效果。该“Mysetup.inf”文件可完成如下的安装任务:假设应用程序有“MyApp.exe”、“MyApp.hlp”、“MyApp.dll”等几个需安装到应用程序主目录的文件,有“Ass_1.dll”、“Ass_2.dll”等几个需安装到Windows\System子目录的文件,要求将各文件按预定目录位置拷贝到位,其中应用程序主目录可在安装过程中选定,同时,在“开始>程序”下面建立名为“我的程序组”的程序组,在该程序组下建立名为“我的应用程序”、“我的应用程序帮助”的两个程序项,分别与“MyApp.exe”和“MyApp.hlp”文件关联。
    完成上述安装任务的“Mysetup.inf”文件内容如下:

    [Version]
    signature=“$chicago$”
    [AdvSetup]
    HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce\Setup,“INF制作安装程序”,,“RunDll32.exe“%01%”\advpack.dll,LaunchINFSection Mysetup.inf,DefaultInstall2”
    [DefaultInstallX]
    [DefaultInstall]
    AddReg=AdvSetup
    [DefaultInstall2]
    CopyFiles = 拷贝到用户指定目录,拷贝到Windows\System子目录 ,……
    CustomDestination=My-path
    UpdateInis = 加exe文件快捷方式,加hlp文件快捷方式,……
    [SourceDisksNames]
    1=“文件所在目录”,,0
    [SourceDisksFiles]
    MyApp.exe.exe=1,,1021
    MyApp.dll=1,,1021
    MyApp.hlp=1,,1021
    Ass_1.dll=1,,1021
    Ass_2.dll=1,,1021
    [DestinationDirs]
    拷贝到用户指定目录 = 49000
    拷贝到Windows\System子目录 = 11
    [My-path]
    49000,49001,49002,49003=index-again,1
    [index-again]
    “”,“”,“”,,““默认安装到“C:\MyApp”目录,可选择””,“%30%\MyApp”
    [拷贝到用户指定目录]
    MyApp.exe
    MyApp.dll
    MyApp.hlp
    [拷贝到Windows\System子目录]
    Ass_1.dll
    Ass_2.dll
    [加exe文件快捷方式]
    setup.ini, progman.groups,, “group1=““我的程序组”””
    setup.ini, group1,,“““我的应用程序””,““““““%49000%\MyApp.exe””””””,,,,,““MyApp.exe”””
    [加hlp文件快捷方式]
    setup.ini, progman.groups,, “group1=““我的程序组”””
    setup.ini, group1,,“““我的应用程序帮助””,““““““%49000%\MyApp.hlp””””””,,,,,““MyApp.hlp”””
    读者会注意到上面的文件内许多键名使用了中文,这是因为INF格式文件支持中文提示及中文键名。这些中文键名不仅充当功能键起索引的作用,还形象化地标识了键的前后对应关系,增强了文件内容的可读性,有利于后续更改、维护。

    安装时,首先确保应用程序的所有待安装文件和“Mysetup.inf” 文件处在同一个目录下,右击“Mysetup.inf”文件选“安装”或按Shift键的同时按功能键F10。待目录选择对话框出现,点击“浏览”按钮或直接在文本编辑框内键入目录名称后,屏幕显示文件安装拷贝和更新快捷方式进度,最终结束。

    打开资源管理器,就可查看到所有文件均已拷贝到指定目录位置。点击“开始>程序”,可以找到“我的程序组”程序组及下属的“我的应用程序”、“我的应用程序帮助”程序项,选中程序项均能激活对应文件,说明文件安装及快捷方式关联均告成功。
  • 相关阅读:
    Kernel 3.0.8 内存管理函数【转】
    machine_desc结构体【转】
    Linux内存管理--物理内存分配【转】
    struct 和 class 不同点
    Zabbix Step 1 : Install CentOS6.5 and Configration
    读《大数据》的三重大思维转变,有感
    宇宙中最强大的开发环境免费了!
    中国开源不靠谱,谈何服务万众创新?
    【笨木头Lua专栏】基础补充08:协同程序之resume-yield间的数据返回
    [概率dp] ZOJ 3822 Domination
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887951.html
Copyright © 2011-2022 走看看