Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/installation/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 为什么这么多程序同时具有setup.exe和setup.msi?_Deployment_Installation - Fatal编程技术网

Deployment 为什么这么多程序同时具有setup.exe和setup.msi?

Deployment 为什么这么多程序同时具有setup.exe和setup.msi?,deployment,installation,Deployment,Installation,我一直在想这件事。许多应用程序设置都有一个zip文件,您可以将其解压缩,其中包含一组文件,其中包括一个exe和一个msi。有什么区别?它们通常大小差不多。我从来没有真正确定要执行哪一个,有时我执行exe,有时执行msi,它通常与任何一个一起工作。但是其中一个做了另一个没有做的事情吗?如果不是,那么拥有两个做同样事情的文件不是一种浪费吗?特别是在考虑下载大小等问题时 不确定这是在这里还是在ServerFault上,或者两者都不在,但我想,由于开发人员通常是创建安装文件的人,那么开发人员可能知道为什

我一直在想这件事。许多应用程序设置都有一个zip文件,您可以将其解压缩,其中包含一组文件,其中包括一个exe和一个msi。有什么区别?它们通常大小差不多。我从来没有真正确定要执行哪一个,有时我执行exe,有时执行msi,它通常与任何一个一起工作。但是其中一个做了另一个没有做的事情吗?如果不是,那么拥有两个做同样事情的文件不是一种浪费吗?特别是在考虑下载大小等问题时


不确定这是在这里还是在ServerFault上,或者两者都不在,但我想,由于开发人员通常是创建安装文件的人,那么开发人员可能知道为什么会这样=)

在既有exe又有msi的情况下,exe只是msi的加载程序。如果您的安装支持多种语言,则exe会在安装之前在msi上应用语言转换(mst)


您可以将EXE视为MSI周围的包装器。msi文件可以单独提供,也可以不单独提供。人们也提供msi文件的原因是为了方便组策略安装(在Windows Active Directory基础结构中),因为您只能下推msi文件的安装,而不能下推EXE。

实际安装是在msi中完成的。正如Prashast所说,exe只是一个包装器,但拥有exe的原因是exe总是可以运行的。如果用户未在计算机上安装MS Installer,或者其MS Installer版本比安装所需的版本旧,则MSI文件无法运行


exe在运行MSI文件之前自动安装MS Installer(包括向用户询问是否需要安装)。在大多数情况下,Microsoft Installer所需的安装程序包包含在setup.exe中,或者有时它只是先决条件检查,带有从Microsoft下载安装的链接。

setup.exe是MSI的包装,但它不仅仅是一个包装

  • setup.exe
    可以依赖
    setup.ini
    来定义参数
  • setup.exe
    检查Windows安装程序(否则无法安装MSI)
  • setup.exe
    可以检查框架,如.NET框架。开发人员可以选择
    C:\Program Files\Microsoft SDK\Windows\v6.0A\Bootstrapper\Packages
    (适用于Visual Studio 2008)中定义的一个。如果缺少,它将尝试从
  • setup.exe
    可以使用
    msistuff.exe
    • 用最基本的话来说


      您可以只提供.msi文件,然后安装它。但是,如果没有.msi

      +1,则.exe将无法工作。如果您是创建.exe和.msi的人,并且希望使用证书保护它们,那么exe还可能会检查msi的某些先决条件,例如Windows Installer verionSo,您会签署哪个证书?还是两个都签?我经常想知道同样的事情。我确实认为这属于这里。这里有一个更近期的答案:这个答案是不正确的。
      setup.exe
      程序可以是一组代码,它本身可以解压文件,将文件复制到硬盘驱动器,并将文件注册到注册表或其任何组合。如果
      setup.exe
      程序是以这种方式编写的,或者是在没有选择MSI选项的情况下使用包管理器(如
      InstallShield
      )创建的,则安装应用程序不需要MSI。这并不能解释任何问题。