zoukankan      html  css  js  c++  java
  • [笔记]WiX制作msi安装包的例子

    WiX是制作msi安装文件的工具,看了半天文档,感觉没有什么比一个例子更简单粗暴的了。

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
      <Product Id="*" Name="HelloMSI" Language="1033" Version="1.0.0.0" Manufacturer="LEH" UpgradeCode="1de12ee7-2e94-42ac-979f-06245a0ade31">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
        
        <Directory Id="TARGETDIR" Name="SourceDir">
          <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLFOLDER" Name="HelloWorld">
              <Component Id="ProductComponent" Guid="B5F0C012-49D6-4C63-AFCA-0CE6C24C6D7E">
                <File Id="HelloWorld" Source="HelloWorld.exe" />
              </Component>
            </Directory>
          </Directory>
        </Directory>
        
        <Feature Id="ProductFeature" Title="HelloWorld" Level="1">
          <ComponentRef Id="ProductComponent" />
        </Feature>     
    
        <Property Id="WixShellExecTarget" Value="[#HelloWorld]" />
        <CustomAction Id="LaunchFile" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes"/>
        
        <InstallExecuteSequence>
           <Custom Action='LaunchFile' After='InstallFinalize'>NOT Installed</Custom>
        </InstallExecuteSequence>
      </Product>
    </Wix>

    将这段XML存为Product.wxs,记得是UTF-8编码,然后命令行下执行:

    candle Product.wix
    light Product.wixobj -out HelloWorld.msi -ext WixUtilExtension
    msiexec /i HelloWorld.msi /qn

    忘了说运行的前提:

    • 安装WiX并将其加入PATH
    • 命令行需要以管理员权限打开
    • 将例子中的GUID也都换一下吧

    刚才做的事情,其实就是:

    1. 将Helloworld.exe包装进msi安装文件Product.msi
    2. 然后静默安装Product.msi
    3. 安装完成后立即运行Helloworld.exe文件

    [参考文献]

    阿扁的“Wix学习整理”
    WiX官网的“How To: Run the Installed Application After Setup”

    StackOverflow的“Open readme.txt at end of installatin failed in WiX”

  • 相关阅读:
    Mac普通用户修改了/etc/sudoers文件的解决办法
    python对缓存(memcached,redis)的操作
    线程、进程、协程和队列
    python作用域和多继承
    sokect编程进阶
    socket编程基础
    python面相对象进阶
    python异常处理
    configparser模块
    subprocess模块
  • 原文地址:https://www.cnblogs.com/journeyonmyway/p/4340918.html
Copyright © 2011-2022 走看看