1、起因

由于域推送只支持msi安装包,而很多常用的工具比如Adobe Flash Player.exe、SilverLight.exe都是exe格式的,于是引出要将exe转成silent msi的工作。

2、尝试1

首先是exe2msi。这个小工具的优点是简单方便,只要exe本身支持静默命令行(比如adobeFlashPlayer11.exe /install、silverlight.exe /q)之类的即可。缺点是很多安装包并不支持静默参数。

3、尝试2

然后是Advanced Installer,目前的版本是10.6。AdvInst提供2种方式:1)msi from exe,但这种方式只是用一个外部的msi包裹exe,如果exe不支持静默,仍然会停下来等待用户的交互。2)Repackage Installation,这种方式可以重新打包,原理是在安装前记录一下系统的镜像、安装后再记录一个snapshot,对比2个镜像找出安装前后的所有变化,包括文件、文件夹、注册表、服务……的增删改。因此尽量少开软件、尽量在干净的系统上跑,这样出来的msi会比较靠谱。操作如下:

  • 新建->导入->Repackage Installation
  • 将此计算机上的应用程序重新打包->选择Fiddler1Setup.exe->关键是“当前配置文件”,点编辑
  • “文件类型过滤”里勾上“不用扩展名排除文件”->文件和文件夹过滤”里“新建文件夹”把c:\program files\加上
  • 也可以添加需要的注册表项,这里的配置关系到后面是否能抓取到你想要的文件,要仔细选择!
  • 录制完成后,点击“查看重新封装器统计”,弹出窗口显示刚才到底收集到哪些变化,一般来说,至少Added Files应该大于0,如果只有folder,没有files,很有可能是刚才的配置里把需要的文件过滤掉了,重新配置即可。
  • 把结果导入之后,1)安装参数->限于基本的用户界面(简单进度和错误处理)勾上,这样会以静默方式安装;2)在文件列表和注册里去掉不需要的,比较我本机生成时,就抓到了杀毒软件trend和其他后台进程的Log文件,删掉即可。
  • 最后点击保存,生成msi即可。

4、其他推送工具

后来才知道,还有不少推送工具是可以推exe的,比如微软的SCCM(system center configuration manager)和VRV之类的监控软件。当然,安装包本身还是要支持静默的,一般正规的安装包都会以各种方式支持静默,少数不支持的,就需要用AdvInst之类的工具重新打包。

exe转msi的更多相关文章

  1. 使用AdvinceInstaller把exe或者msi重新包装成为msi静默安装程序

    最近在学习installShelled打包.net做的软件,其中mysql数据库的静默安装脚本不会写,本人新手勿喷.在不会写脚本的方式下,偶然间看见了这个AdvinceInstaller可以吧.exe ...

  2. VS安装程序制作之MSI/EXE

    MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据.MSI文件将程序的组成文件与功能关联起来 ...

  3. 什么是MSI文件?

    当你双击`msi`文件时,就会调用`window.installer`程序,接下来就和安装其他程序一样了,但是你要确保你的`window.installer`服务是开启的,你可以在控制面板下的服务中找 ...

  4. 使用msiexec.exe绕过应用程序白名单(多种方法)

    0x00 前言 在我们之前的文章中,我们讨论了“Windows Applocker策略 - 初学者指南”,因为它们为应用程序控制策略定义了AppLocker规则,以及如何使用它们.但今天您将学习如何绕 ...

  5. 使用VS进行打包程序解决生成两个文件的问题(压缩后只有一个exe)

    使用VS打包创建setup相信大家都挺熟的了,不熟的话网上也有很多,就不做介绍了,现在给大家写下怎么将生成的那些文件夹以及setup.exe和.msi 文件打包成一个exe 我们这里使用的是Winra ...

  6. mybatis-generator-gui如何打包成exe

    快速阅读: ​ 用wix和inno setup把mybatis-generator-gui 打包成exe和安装文件. 以后使用的时候方便,不用每次打开eclipse运行. 使用inno setup 5 ...

  7. ASP.net MVC 文件下载的几种方法(欢迎讨论)

    在ASP.net MVC 中有几种下载文件的方法 前提:要下载的文件必须是在服务器目录中的,至于不在web项目server目录中的文件下载我不知道,但是还挺想了解的. 第一种:最简单的超链接方法,&l ...

  8. 他山之石——vs2013 安装与部署及程序打包

    C#打包需要这个:InstallShield 2013 Limited Edition for Visual Studio  .下载地址: InstallShield 2013 Limited Edi ...

  9. 【转载】VS2012的打包方法

    上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...

随机推荐

  1. golang 资源

    1.Learning Go <学习Go语言> http://www.miek.nl/projects/learninggo/中文版http://mikespook.com/learning ...

  2. vim 学习记录

    VIM中PHP代码使用tab键自动完成 更新于 2013-01-18 05:47:55UEANER 目录结构 $ tree -C ~/.vim | grep -v ".cnx" | ...

  3. wifi adb 调试手机

    首先手机,PC都连上WIFI, 如果可以用USB操作,在PC端,输入ping 手机的ip 地址,看看是否成功, 在PC端输入下面命令adb tcpip 5555adb connect 192.168. ...

  4. [转]Android 5.0——Material Design详解(动画篇)

    Material Design:Google推出的一个全新的设计语言,它的特点就是拟物扁平化. Material Design包含了很多内容,今天跟大家分享一下Material新增的动画: 在Andr ...

  5. xcode6 AsynchronousTesting 异步任务测试

    xcode集成了非常方便的测试框架,XCTest 在xcode6之后,提供了 <XCTest/XCTestCase+AsynchronousTesting.h> 利用此我们可以直接在XCT ...

  6. Windows下DLL查找顺序

    目录 第1章说明    2 1.1 查找顺序    2 1.1.1 检查DllCharacteristics字段    3 1.1.2 读取manifset资源    3 1.1.3 读取manifs ...

  7. Unity5.3官方VR教程重磅登场-系列2

    作者:王寒链接:https://zhuanlan.zhihu.com/p/20485529来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 欢迎继续我们的学习. 北京时间 ...

  8. IEnumerable接口的实现

    对象要实现可以迭代需IEnumerable接口并实现GetEnumerator方法.一下简单例子 public class SPEnumerable<T> : IEnumerable { ...

  9. 字符串(string)转json

    第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式. 正确的转换方式需要加(): testJson = eval("(" + ...

  10. javaScript定义对象的方法

    转自souhu新闻http://news.sohu.com/20110215/n279335637.shtml? javascript定义对象的几种简单方法 1.构造函数方式,全部属性及对象的方法都放 ...