Wix Toolset打包文件夹为MSI

1. 介绍

  Wix Toolset是一个打包工具,用于将开发好的软件或者三方库打包成Windows安装程序(Microsoft Installer,MSI)。这个工具本身是开源的,通过XML文件来配置打包属性。使用方法是:

  1. 首先需要编写打包配置文件**.wxs,不妨命名为Sample.wxs,这个文件本身就是XML格式。

  2. 然后Wix Toolset的candle.exe工具来“编译”Sample.wxs。即执行candle.exe Sample.wxs命令,该命令执行后会在同目录下生成Sample.wixobj文件。

  3. 使用Wix Toolset的light.exe工具来“链接”Sample.wixobj。即执行light.exe Sample.wixobj命令,该命令执行后会在同目录下生成Sample.msi,即我们安装包文件。

  4. 如果我们Sample.msi本身会依赖于一些框架,比如.Net Framework 4。而用户可能没有安装.Net Framework 4,这时候可以再编写一个ExeBundle.wxs(名字任意取),里面需要有标签。然后“编译”和“链接”就可以得到一个新的安装包ExeBundle.exe,当安装Sample.msi时如果没有.Net Framework 4环境,自动安装这个环境,有则不用安装,后面我们会详细说明。

2. 一个简单的例子

  先看一个官方给出的简单的例子(参考: https://www.firegiant.com/wix/tutorial/getting-started/ ),如果想直接看打包文件夹为MSI的可以跳过这一节。

2.1 编写SampleFirst.wxs

  假设我们要打包如下3个文件为一个安装包。

Wix Toolset打包文件夹为MSI_第1张图片
  首先我们需要编写打包配置文件SampleFirst.wxs,内容如下,SampleFirst.wxs与3个文件的同一目录。



  
  
	
    
    
	  
    
    
    
	
    
    
	
    
      
        
          
            
            
            
              
                
                
              
            
            
            
            
              
            
			
            
            
              
                
              
            

          
        
      
	  

      
        
          
            
            
          
        
      

      
    
	
    
    
      
        
        
        
      

      
        
      
    
	
    
    
    
    
    

    
	
    
    

  

  然后打开cmd,“编译”和“链接”SampleFirst.wxs,命令分别是candle SampleFirst.wxslight SampleFirst.wixobj -ext WixUIExtension。由于使用了,所以需要-ext WixUIExtension。命令执行完后会生成如下文件,这样就完成了打包。

Wix Toolset打包文件夹为MSI_第2张图片

3. 打包文件夹为MSI

  比如我需要打包一个文件夹,如下图。

Wix Toolset打包文件夹为MSI_第3张图片

3.1 使用heat.exe生成temp.wxs

  由于该文件夹中有很多文件,所以我们需要用heat.exe命令(参考 https://wixtoolset.org/documentation/manual/v3/overview/heat.html )来帮我们将这些文件生成对应的。使用命令:

heat.exe dir my_project -cg MyComponentGroup -gg -sfrag -template fragment -out temp.wxs

结果如下,可以看到执行命令后报错了,但是其实不影响。

Wix Toolset打包文件夹为MSI_第4张图片
打开temp.wxs,然后将中文件的路径改为有效路径。就是将:

Wix Toolset打包文件夹为MSI_第5张图片
替换为

Wix Toolset打包文件夹为MSI_第6张图片

3.2 编写Pack2MSI.wxs

  然后编写Pack2MSI.wxs,这里就需要将temp.wxs中的Component复制过去,内容如下:


	 
  
  

    
    

    
    
    
	
    
    
	
	
    

      
      
        
          
            
            
          
        
      

      
    
    
    
    
      
        
        
        
      
    
	
    
    
    
    
    
	
    
	
    
	
    
    
    
    
  

  
  
  
        
            
                
                
                    
                    
                        
                        
                        
                            
                                
                            
                            
                        
                    
                
            
        
    
    
    
        
            
            
            
            
        
    

3.3 生成MSI

  运行命令candle Pack2MSI.wxslight Pack2MSI.wixobj -ext WixUIExtension就打包成功了,如下图:

Wix Toolset打包文件夹为MSI_第7张图片
然后可以安装测试一下。

3.4 添加依赖程序

  比如安装Pack2MSI.msi需要依赖VC++ 2015 x64运行库,即vc_redist.x64.exe。这时可以使用,首先看一下文件夹结构,如下图所示。

Wix Toolset打包文件夹为MSI_第8张图片

3.4.1 编写ExeBundle.wxs

  内容如下:



  
  
  
      
      
		
	  
      
      
        
        
        
		
        
        
      
  
  
  
    
	
    
        
        
        
    
  

3.4.2 生成ExeBundle.exe

  分别执行命令:

candle ExeBundle.wxs -ext WixBalExtension -ext WixUtilExtension

light ExeBundle.wixobj -ext WixBalExtension -ext WixUtilExtension

就可以得到安装包ExeBundle.exe。 运行ExeBundle.exe可以得到如图所示的页面

Wix Toolset打包文件夹为MSI_第9张图片

如有问题,欢迎斧正和讨论。

参考

1. https://www.firegiant.com/wix/tutorial/getting-started/
2. https://blog.csdn.net/zerg_nick/article/details/102636516

你可能感兴趣的:(Wix Toolset打包文件夹为MSI)