• Wix学习整理(6)——安装快捷方式


    一 为HelloWorld案例添加安装快捷方式

    通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问。现在我们就在上篇添加注册信息的基础上为HelloWorld的安装包添加安装快捷方式。下面我们将以安装开始菜单快捷方式为实例详细地阐述一下Wix的关于安装快捷方式的基础知识。

    首先,我们要定义好目录结构。

    开始菜单快捷方式的安装目录结构与应用软件的实际安装目录结构不一样。

    <Directory Id="ProgramMenuFolder">
             <Directory Id="ApplicationProgramsFolder" Name="HelloWorld" />
    </Directory>

    ProgramMenuFolder是Windows Installer预定义的一个属性,其值为目标机器的开始菜单目录。Id为TARGETDIR的<Directory>必须是唯一的根目录,于是第一个<Directory>就放在该根目录下面。第二个<Directory>是在开始菜单目录下创建一个名为HelloWorld的子目录。

    接下来,就开始注明我们的快捷方式信息。

    下面这小片段就是安装开始菜单快捷方式的Wix代码。

    <DirectoryRef Id="ApplicationProgramsFolder">
             <Component Id="ApplicationShortcut" Guid="68485251-0D3B-4EFC-8792-A721D4AE8AB7">
                       <Shortcut Id="StartMenuShortcut"
                                         Name="HelloWorld.exe"
                                         Description="My HelloWorld"
                                         Target="[INSTALLFOLDER]HelloWorld.exe"
                                         WorkingDirectory="INSTALLFOLDER" />
                       <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall" />
                       <RegistryValue Root="HKCU" Key="Software\Microsoft\HelloWorld"
                                      Name="StartMenuShortcut" Type="integer" Value="1" KeyPath="yes" />
             </Component>
    </DirectoryRef>

    <DirectoryRef>元素引用了我们在开始菜单目录下定义的子目录HelloWorld,表明我们要安装的快捷方式就放在该HelloWorld子目录下。然后通过一个<Component>来包含我们的快捷方式(记得Component是Windows Installer安装的最小单元)。

    通过<Shortcut>元素,我们就指定了我们要创建的快捷方式的信息。Name指定了快捷方式的名字;Description指定了快捷方式的描述信息,当鼠标移到该快捷方式上时,其会以ToolTip方式显示;Target指定了快捷方式引导的目标文件,其中[INSTALLFOLDER]解析出Id为INSTALLFOLDER的<Directory>所指向的目标目录的路径,所以本快捷方式将引导路径C:\Program Files\HelloWorld\下的HelloWorld.exe文件;WorkingDirectory则指定了该快捷方式的工作目录。

    另外,如果我们想更改快捷方式的图标,我们需要通过一个<Icon>元素加载一个图标文件,然后通过<Shortcut>元素的Icon属性引用该图标文件即可。

    <RemoveFolder>元素表明在卸载HelloWorld这个应用程序时(On=”uninstall”)将删除Id为ApplicatioinProgramsFolder的目录(即我们在开始菜单目录下创建的子目录HelloWorld)。

    <RegistryValue>元素指定了一个在创建快捷方式时注册到注册表的信息。这是创建快捷方式时必需的元素,因为快捷方式不能作为一个Component的KeyPath。

    关于在桌面创建快捷方式的内容与上面差不多,在这里就不多费敲键盘的手力了。

    最后,我们需要将Component放到一个Feature中安装。

    为了顺道展示一下Feature树,在这里我们将创建开始菜单快捷方式和桌面快捷方式放在一个单独的Feature。

    <Feature Id="ShortcutFeature" Title="Shortcut" Level="1">
             <Feature Id="StartMenuShortcutFeature" Title="StartMenuShortcut" Level="1">
                       <ComponentRef Id="ApplicationShortcut" />
             </Feature>
             <Feature Id="DesktopShortcutFeature" Title="DesktopShortcut" Level="1">
                       <ComponentRef Id="DesktopShortcutComponent" />
             </Feature>
    </Feature>

    然后,我们需要设置WixUI为WixUI_FeatureTree。

    <UIRef Id="WixUI_FeatureTree" />

    完整的Wix源文件

    下面是一个完整Wix源文件。

    Product.wxs

    将文件保存为Product.wxs,然后通过candle编译和light链接,

    candle Product.wxs
    light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"

    就生成我们HelloWorld的安装包HelloWorld.msi文件了。

    二 验收我们的成果

    双击.msi文件,在协议界面同意了协议并点下一步,我们就看到下面这样的一个安装界面,

    看到Feature树了吧。安装成功后,在开始菜单和桌面都会看到命名为HelloWorld.exe的快捷方式了(虽然图标有点挫,不过我们成功了)。

    来,动手试试吧,感觉会很不一样的噢!

  • 相关阅读:
    15回文相关问题
    14海量日志提取出现次数最多的IP
    13概率问题
    12胜者树和败者树

    pysnmp程序
    python 多线程 生产者消费者
    python多线程
    pysnmp使用
    PyYAML使用
  • 原文地址:https://www.cnblogs.com/lienhua34/p/2731816.html
Copyright © 2020-2023  润新知