这次发布的是这两天做的一个WIX工具QuickWIX,主要解决两个问题点1.对大文件快速生成wix标签(files,Directories,ComponentRef);2.比较前后两次工程的差异。大的WIX工程有好几千个文件,开发人员增加dll,或者资源文件都是不确定的,而且很多时候我们无法直接取代,所以需要一个对比的功能,来告诉打包人员哪里新增了,哪里删除了,这样加快打包速度。

一、介绍

      工具是个简单的winform程序。下面做几点说明。

      Wix 安装部署教程(十一) ---QuickWix

     1.生成XML:会更具路径和变量信息,生成Fragment,Feature和Directory。

     2.对比:找出差异的文件、目录和组件信息:

     Wix 安装部署教程(十一) ---QuickWix

    3.自动保存最新工程:如果选中,在对比的时候就会把当前工程的信息保存下来。

    4.保存:手动保存当前工程信息

    5.目录:当前工程的目录信息。

    6.组件:当前工程的组件信息。

    7.目录:当前工程的目录信息。

 

 二、原理

     1.工程目录如下,所有WIX先关对象都继承IWixBase接口。

   Wix 安装部署教程(十一) ---QuickWix

     用于生成对象本身的WIX标签。这样在有子类的时候,调用子类的ToWixString()方法即可。 

 public interface IWixBase
   {
       /// <summary>
       /// 返回wix标签
       /// </summary>
       /// <returns></returns>
       string ToWixString();
   }

  2.WixProj包含WixDirectory,WixFragment,WixFeature,是Wix对象最父类的元素。也是用来保存xml的对象。

 [Serializable]
    public class WixProj : IWixBase
    {
       private WixDirectory _wixDirectory;
       private WixFragment _wixFragment;
       private WixFeature _wixFeature;


       /// <summary>
       /// 比较Directory
       /// </summary>
       public WixDirectory WixDirectory
       {
           get { return _wixDirectory??(_wixDirectory=new WixDirectory()); }
           set { _wixDirectory = value; }
       }

       /// <summary>
       /// 比较Files
       /// </summary>
       public WixFragment WixFragment
       {
           get { return _wixFragment??(_wixFragment=new WixFragment()); }
           set { _wixFragment = value; }
       }

       /// <summary>
       /// 比较ComponentRef
       /// </summary>
       public WixFeature WixFeature
       {
           get { return _wixFeature??(_wixFeature=new WixFeature()); }
           set { _wixFeature = value; }
       }

        public string ToWixString()
        {
            var sb = new StringBuilder();
            sb.Append(WixFragment.ToWixString());
            sb.Append("\r\n");
            sb.Append("\r\n");
            sb.Append(WixDirectory.ToWixString());
            sb.Append("\r\n");
            sb.Append("\r\n");
            sb.Append(WixFeature.ToWixString());
            return sb.ToString();
        }
    }
View Code

相关文章:

  • 2022-12-23
  • 2021-06-21
  • 2022-12-23
  • 2021-12-05
  • 2021-10-26
  • 2021-11-20
  • 2021-09-28
猜你喜欢
  • 2021-12-18
  • 2021-08-30
  • 2021-10-25
  • 2021-07-27
  • 2021-09-04
相关资源
相似解决方案