`
salever
  • 浏览: 258367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Wix使用整理(一)

    博客分类:
  • WIX
阅读更多

    由于工作需要,学习了一段时间Wix,总算小有起色。鉴于国内Wix 的普及和使用有限,这里将个人遇到得问题和解决方案记录下来,以便交流和相互促进。

    

   Wix :全称 Windows Installer XML , 属于微软的一个开源项目,目标是使用 XML 语言灵活的定制具有各种功能的安装包,需要微软的 Windows Installer 服务支 持。

   Wix
生 成的产品为 msi 文 件,这种可执行文件与 exe 文件最大的不同为,它更底层,安装文件的同时可以对系统或者其他软件进行设置。

  下面的所有内容是基于 Wix3.0 版本。

 

    Wix 基本入门资料:

    Wix Document

    Wix tutorial ( 仅支持到 Wix2.0)

    这两份资料都可以通过 Wix 的发布网站获取。

 

1)         Language Codepage 的设置

Language 指所在地区使用的语言,为数字编号。
Codepage
指所在地区的代码页,用来进行 区域区分。
下来列举几个常见的区域代号:
语言                                语言 - 国家      Language      Codepage
English                            en-us             1033               1252
Simplified Chinese             zh-cn              2052               936
Traditional Chinese            zh-tw              1028                950

2)         GUID 的生成

VS2005 中,通过 工具 ”——“ 创建 GUID” 生成。
GUID
也可以自行定义,但是前提是要保证唯一。

3)         安装文件描述 XML 自动生成

当安装文件特别多的时候,我们 就需要用专用的工具进行文件描述 XML 的自动生成了,采用的是 Wix 自带的 heat 工具,位于安装目录的 bin 下。
    Heat
的使用方法为:
    heat.exe [-?] harvestType <harvester arguments> -out sourceFile.wxs
   
详细见 Wix 说明文档。
   
例子:
    heat.exe  dir ABC -gg -ke -sfrag -template:fragment -dr INSTALLLOCATION -cg BasicComponentGroup -srd -out  ABC.wxs
   
作用为:将目录 ABC (相对目录)下的所有文件(包括空目 录)作为一个 ComponentGroup 添加到 ABC.wxs 文件中,其中根目录为 INSTALLLOCATION ,段标签为 fragment
运行这行命令会自动生成一个 wxs 文件,里面包含 ABC 目录下所有文件的描述。

4)         Feature 的选择安装

Wix 安装包中所有的组件都是以 Feature 的方式安装到系统中的, Level 是安装级别,是最重要的属性之一,不可缺少。
    Level
的值为整型,最小为 0 ,最大 1000 。为 0 的时候此 Feature 不安装。 一般来 说 Level 与选 择安装关联,与之相对应的一个属性为 INSTALLLEVEL ,默认为 1. 小于 1 Feature 将不会被安装。 Level 值为 3 Feature Typical 类型, Level 值大于 3 Complete 类型。 Level 也可以在安装时动态修改,使用 <Condition> 条件判断。例如:
<Feature Id="DesktopFt" Title="Desktop" Level="1">
        <Condition Level="0"><![CDATA[HASDESKTOP <> "1"]]></Condition>
        <ComponentRef Id="DesktopShortcutComponent"/>
  </Feature>
   
如果 HASDESKTOP 属性值不为 1 ,那么此 Feature Level 将为 0 ,不会被安装。使用此种方式选择安装需注意 HASDESKTOP 属性的初始化位置,一定要保证在 Feature 初始化前进行。否则设置无效。
   
也可以采用另一种方法选择性安 装:
    HASDESKTOP
属性修改的地方添加 <Publish>
      <Publish Event="AddLocal" Value="ALL">1</Publish>
      <Publish Event="Remove" Value="DesktopFt"><![CDATA[HASDESKTOP <> "1"]]></Publish>
   
这样效果一样,但是不需要 HASDESKTOP 的值的初始化在 Feature 之前。
   
详细参考 http://www.joyofsetup.com/2007/05/30/feature-conditions-and-ui/
(
附注:    注意此种方式下内置属性 REMOVE 的值就不再为空,那么在安装时也不能以 REMOVE 来判断当前操作 )

5)         Property 的使用

Wix 中使用自定义变量的方法为声明 Property (属性)。
Property
分为两种:全局的和局部的。全 局属性必须全部大写,否则视为局部属性。
例如:
<Property Id="HASDESKTOP" Value="1"/>
如果改为小写,那么其他文件(也许是 fragment )的代码调用属性无效。
搜索、判断得到的属性一律为全局 属性,大写。例如:
<Property Id="VC71PATH">
      <RegistrySearch Id="VC71" Type="raw" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\7.1" Name="InstallDir"/>
</Property>
上述例子为在注册表中查找 VC71 InstallDir 的值,如存在将值付给 VC71PATH ,不存在则 VC71PATH 为空。

6)         安装包的中文化

Wix 默认的语言为 en-us ,中文化需要另外添加 zh-cn zh-tw 的描述文件。
拥有了中文拓展的文件以后,在代码中使用 loc 调用属性即可,使用方式与 en-us 无异。
当然也可以自定义一些中文化的标签,格式为:
<WixLocalization Culture="zh-cn" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="LicenseThirdPartText" Overridable="yes">
请仔细阅读以下声明 </String>
</WixLocalization>
调用方式为: text =”!(loc.LicenseThirdPartText)”

中文语言包下载地址为:http://download.csdn.net/salever

7)         内置 CustomAction 的使用

1. Quiet Execution Custom Action 安静模式下执行操作。允许用户在后台执行一些命令,但是不 出现执行窗口。
   
1 ,安静模式下执行 CMD 操作 
<Property Id="QtExecCmdLine" Value="command line to run"/>
<CustomAction Id="QtExecExample" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/>
<InstallExecuteSequence>   
   <Custom Action="QtExecExample" After="TheActionYouWantItAfter"/>
</InstallExecuteSequence>
采用安静模式执行 CMD 操作,但是不出现 CMD 命令窗口。注意 Value 中的命令以及应用程序必须加引 号,即使没有空格也要加上。

2 ,安静模式下执行其他应用程序操作
<CustomAction
I d="QtExecDeferredExampleWithProperty_Cmd" Property="QtExecDeferredExampleWithProperty"
              Value=""[#MyExecutable.exe]"" Execute="immediate"/>
<CustomAction Id="QtExecDeferredExampleWithProperty" BinaryKey="WixCA" DllEntry="CAQuietExec"
              Execute="deferred" Return="check" Impersonate="no"/>

<InstallExecuteSequence>
    <Custom Action="QtExecDeferredExampleWithProperty_Cmd" After="CostFinalize"/>
    <Custom Action="QtExecDeferredExampleWithProperty" After="TheActionYouWantItAfter"/>
</InstallExecuteSequence>

2.ShellExecute CustomAction
执行打开文档或 URL 等操作。典型应用为安装完成后打开帮助 文件或则运行安装程序。

例:
<Property Id="WixShellExecTarget" Value="myapplication.exe" />
    <CustomAction Id="LaunchApplication"
        BinaryKey="WixCA"
        DllEntry="WixShellExec"
        Impersonate="yes" />
    </Product>

 

 

分享到:
评论

相关推荐

    Windows installer xml使用整理

    Windows Installer XML(WiX)是一个开源工具集,用于创建Windows安装程序。它使用XML格式来定义安装包的组件,使得...在实际工作中,结合提供的`Wix使用整理.doc`文档,可以进一步学习和掌握WiX的具体用法和最佳实践。

    软件打包工具

    WiX使用XML语法,可以创建完全定制化的安装程序,适合大型项目和企业级应用。 4. Electron Builder:对于基于Electron框架的跨平台桌面应用,Electron Builder是一个很好的选择。它可以生成Windows、macOS和Linux的...

    安装文件制作

    在IT行业中,制作安装文件是软件开发流程中的一个重要环节,它能让用户轻松地在计算机上部署和使用软件。本文将详细讲解安装文件制作的相关知识点,包括安装文件的作用、制作工具的选择、基本步骤以及常见问题。 ...

    NSIS用户手册 中文版和NSIS图文教程集锦 - 轻狂志 - 20150508

    《NSIS图文教程集锦 - 轻狂志》可能是轻狂志个人整理的一系列NSIS教程,通过图文并茂的方式讲解NSIS的使用。教程可能包括以下部分: 1. **快速入门**:为初学者提供快速上手的教程,包括安装NSIS编译器和编写第一个...

    如何安装驱动并进行打包

    2. **整理驱动文件**:将驱动相关的所有文件,包括.sys、.inf、.dll等,整理到一个目录下。 3. **创建INF文件**:INF文件是驱动安装的关键,它包含了驱动的描述、安装路径、依赖项等信息。确保INF文件正确无误,...

    打包工具-----打包你要发布软件的安装程序.rar

    - WiX (Windows Installer XML):微软提供的XML格式的构建工具,用于创建Windows Installer MSI包,适合大型企业级应用。 - Advanced Installer:商业级打包工具,提供丰富的定制选项和自动化脚本支持。 - ...

    把C#开发程序打包成绿色的exe执行文件(自解压文件)

    注意,这种方法适用于小型项目,如果项目较大或有复杂的依赖关系,可能需要使用更专业的打包工具,如Inno Setup、Advanced Installer或WiX等,这些工具能够处理更复杂的情况,如注册COM组件、安装.NET Framework等。...

    聊天和打包

    2. **资源整理**:收集图片、音频、配置文件等资源,并放入指定目录。 3. **版本控制**:确保所有必要的文件都在版本控制系统中。 4. **依赖管理**:处理第三方库和框架,确保它们与项目一起打包。 5. **生成安装包*...

    wpf揭秘源码打包

    4. **打包工具**:为了打包WPF应用,开发者通常会使用ClickOnce或WIX等工具。ClickOnce提供了一种简单的部署方式,用户只需点击即可安装,但对自定义需求的支持有限。相比之下,WiX允许创建高度定制化的安装程序,...

    计算机毕业综合实践方案.pdf

    在完成任务的过程中,学生需要设计演示文稿的结构和风格,收集整理食品安全与营养知识,并制作图文并茂的幻灯片。此外,为提升观众观看体验,学生还需学习添加动画和过渡效果。最后,通过演示文稿的演讲与分享,学生...

    【编号83】摄影快闪 模板相册.pptx

    例如,在您的案例中,“摄影快闪”可能是一个短暂的摄影活动,而“模板相册”则可能包含了一系列设计好的页面布局,用于展示快闪活动的照片,使得参与者可以快速地整理和分享他们的作品,无需从零开始设计每个页面。...

    吐血之作-给程序打上包 (制作安装程序、卸载程序)

    制作安装程序,你可以选择使用各种工具,如Inno Setup、NSIS (Nullsoft Scriptable Install System)、WiX(Windows Installer XML)等。这些工具提供了脚本化的界面,允许开发者自定义安装过程的每个细节。例如,...

    迎新晚会.zip

    8. **数据分析**:对于大型活动,可能会收集门票销售、参与者反馈等数据,IT人员需要使用Excel或数据分析工具(如Tableau、Power BI)进行数据整理和分析,以评估活动效果。 9. **网络安全**:在分享和存储敏感信息...

    [Csharp高级编程(第6版)]15章16章部署

    - **安装程序制作**:使用工具如WiX Toolset或Setup and Deployment Projects in Visual Studio来创建自定义安装程序,方便用户安装应用。 - **自动更新机制**:探讨如何实现应用程序的自动检查更新功能,保持应用...

    打包和注册Demo

    然而,在一些特定的企业或旧版应用环境中,ActiveX仍被广泛使用。 7. **打包和注册的自动化**:现代开发环境中,有多种工具可以帮助开发者自动化打包和注册过程,例如WiX Toolkit、NSIS(Nullsoft Scriptable ...

    如何给程序打包

    4. **资源文件整理**:包含图标、帮助文档、许可协议等,这些是提升用户体验的重要组成部分。确保它们被正确地嵌入到安装包中。 5. **测试打包**:在不同的操作系统和硬件环境下进行测试,以确保打包后的程序可以在...

    firebreath插件文档

    windwos下使用firebreath框架实现插件的整个过程文档整理。 文档包含: 1. firebreath---环境的搭建 2. firebreath---创建plugin插件 3. firebreath---在插件中实现功能 4. firebreath---插件的调试方法 5. ...

    开发程序安装打包工具

    安装打包工具的主要任务是将源代码编译后的可执行文件、库文件、配置文件等资源整理成一个独立的安装包。这个过程通常包括以下几个步骤: 1. **资源收集**:收集程序运行所需的全部文件和资源,如DLL文件、配置文件...

    封包的制做

    - **安装脚本**:创建安装包的第一步是编写安装脚本,这通常使用专门的打包工具完成,如NSIS(Nullsoft Scriptable Install System)、Inno Setup或WiX Toolset。这些脚本定义了安装过程中要执行的步骤,包括文件...

    学生会个人述职报告15篇.docx

    - **网站搭建**:使用WordPress、Wix等平台建立学生会官方网站,发布活动信息和重要通知。 - **移动应用**:开发手机应用程序,方便学生获取信息、参与投票或报名参加活动。 #### 6. **网络安全意识** - **培训与...

Global site tag (gtag.js) - Google Analytics