locked
把MSI exe做成组件 在第二次FBA的时候自动安装 RRS feed

  • 常规讨论

  • 把微软提供的EXE MSI做成组件

     去年的时候论坛robig 有篇大作“Microsoft Windows Media Encoder 9”,我尝试着做了一下,比较复杂,设计到好多注册表,万一有一个搞错了程序就不能运行,看了下系统里有个.NET Framework 3.0 Setup。这个是在系统进行FBA的时候把.net进行安装,我们是不是可以再FBA的时候把需要的组建安装上去呢?这样对自定义shell的系统有很大好处,自定义shell的系统部方便在安装其他东西,同时又有可能安装许多运行环境,比如jre .net(这个提供到3.0 3.5的可以这么做)还有robig提高这个media encoder等等。我们需要在shell程序运行起来的之前就把这些环境安装好,尝试了下是可以实现的。

      举个例子 还以Media Encoder 9为例,首先在微软的网站上把它down下来,然后在CMD里运行命令WMEncoder_cn.exe  /? 结果给出说明如下图

    说明可以实现静默安装,即WMEncoder_cn.exe  /q 。测试下,成功的自动安装,

    我们开始下一步的组件的制作,添加文件并指定好路径 如图

     

    这里要说明下,在destination选着目标路径的时候要注意,后面的文件夹命名千万不要有空格,否则在系统执行的时候。有可能找不到这个文件夹,导致安装失败。

      进行下一步

       添加组件依赖关系,由于使用时windows install service这个服务我们这里把它填上,当然不可避免还要使用CMD这个组件两个都填上

     

     

    然后在这里就是很重要的一步了。在resources里把FBA的命令填上如下

     

    这里的意思就是在FBA的时候运用命令行模式,把该安装的东西安装,该删除的东西删除。。。。。等等相当于windows里的CMD命令行。功能很强大,能干的事情很多。如果你很熟悉CMD命令,那可以做很多事情,闲话少叙,转入正题

     修改resources name的名字

    下面有一些参数,需要填写的Argumentsfilepathphase这三个

    Arguments 这里要添的就是参数,参数就是我们在自己系统上测试的那个参数 这里我们添 /q  意思就是静默安装

     

    File path 当然是指文件的路径了,这里可以用带%的相对路径也可以是绝对路径,由于是在文件建立后才运行所以都可以,我这里就填直接路径了。路径就是上面添加文件时候的路径

    Phase 这个有个说法,我这里添11000

    参考文档里是有参数我摘取出来

    从这两个图片上可以分析出来,xpeFBA的时候分成0-20000段,各给阶段都是那些值。在这里可以看到在8500的时候进行第二次BFA,8501-12000之间进行你自己定义的这些东西,因此我在这里写上11000

      安装填写完了,考虑到XPE一般来说都是要比较小的尺寸,安装完的东西,我们就不需要再给它做备份了,把它干掉吧,这里要用到删除文件夹的命令行。

      再新建一个FBA genius command 来删除装完之后的文件夹

     过程类似不在赘述 看下图

     

    稍微解释下

     Argument有个/c 这个意思是那进行传导后面的命令,这个很重要,如果不加是无法实现后面的命令的,至于rmdir /S /Q %24%\Encoder 就不在多叙,这里是删除上面提到的文件夹。不清楚的可以百度或者Google

     File 这里是调用的CMD,所以我们把它指定为文件路径。

     Phase 这里写了110020,这个就是随便写的,只要你能完成上面的安装过程在执行删除,命令即可,所以要大于11000,但是要小于12000.

     

    不要忘记在responsitory里把相应的资源位置填上,同时在组件设计里把资源选上否则在build的时候不能找到文件,切莫忘记。

     

    最后保存退出,导入数据库,在TD中添加组件测试,成功。

     

     

     

     

    小技巧

      上面说了可以直接静默安装的,在微软网站上下载的好多程序都不能直接静默安装,里面有一些许可说明,安装方式等等。我们这里有个小技巧,微软的东西绝大多数都是需要windows installer service服务的,他们把东西做成MSI文件,然后把msi和相关的文件打成一个EXE包,因此这个包是可以解开的。我们以.netfreamword 1.1 为例,输入dotnetfx /?

     发现有个解包命令 /C 出现解压到指定位置,完成后如图

     

    这里面有个msi包,有了这个就可以实现静默安装了

    在做组件的时候把上面的文件全部添加进去。

     FBA generic command中调用cmd命令行完全可以实现,如图

     

    把组件做成功后 导入DATABSE TD测试是成功的.

     

     这样做成的组件在第二次FBA的时候就能自动执行安装,删除多余的文件,很自动化,而且比较简单,能绕开复杂的注册表,对于自定义shell的各位同仁来说,无疑是个福音。有不足之处请给位多多指教,

    我的联系方式是MSN: wyanhu@hotmail.com

     

     

     

     

    2009年7月2日 4:05

全部回复