C++ MSI内置于VS2015/Win10中,比VS2010/Win 7小4mb

C++ MSI内置于VS2015/Win10中,比VS2010/Win 7小4mb,c++,visual-studio-2010,dll,mfc,windows-installer,C++,Visual Studio 2010,Dll,Mfc,Windows Installer,正如标题所说,我的MSI内置于VS 2015比我的MSI内置于VS 2010小了整整4mb。除了文件大小的差异外,Win10安装程序似乎只能安装在Win8+上,从而在Win7上出现缺少DLL的错误。我试着搜索了许多短语,但找不到与我的问题相关的任何内容。有人能解释一下吗?任何想法都将不胜感激。我可以提供更多信息,但我不确定您需要什么,所以如果您需要更多信息,请告诉我。一些解释意见: MSI文件不是从头开始构建的-它们基于用作起点的模式MSI文件。如果两个VS版本使用不同的模式,您将看到不同的MS

正如标题所说,我的MSI内置于VS 2015比我的MSI内置于VS 2010小了整整4mb。除了文件大小的差异外,Win10安装程序似乎只能安装在Win8+上,从而在Win7上出现缺少DLL的错误。我试着搜索了许多短语,但找不到与我的问题相关的任何内容。有人能解释一下吗?任何想法都将不胜感激。我可以提供更多信息,但我不确定您需要什么,所以如果您需要更多信息,请告诉我。

一些解释意见:

  • MSI文件不是从头开始构建的-它们基于用作起点的模式MSI文件。如果两个VS版本使用不同的模式,您将看到不同的MSI文件,特别是如果删除了对旧内容的支持

  • MSI文件是稀疏文件,不是连续数据流。如果用于更新数据库(MSI文件就是这样)的机制不同,则文件结构可能不同,其中未使用的空间会更少

  • MSI文件包含文件以外的数据。有二进制文件包含位图,调用检测网络框架,C++调用DLL调用托管自定义操作,在VisualStudio两个版本之间可能有不同的东西。此处的任何更改都将更改MSI文件的大小


  • 这是一个实际问题吗?我怀疑如果有人使用VS2010和VS2015生成一个100MB的代码文件,没有人会担心它们的大小是否不同,因为它们是具有不同内部结构的不同编译器

    我并不担心大小不同,只是在某些计算机(包括客户端)上,安装程序会失败,并说“这个Windows安装程序包有问题。”。无法运行完成此安装所需的DLL。请与您的支持人员或软件包供应商联系,但不要指明要将哪个DLL文件连接到哪个DLL文件。但它会在我的电脑和其他一些电脑上工作。这是一个你应该发布的问题。这与尺寸无关。如果您添加了自定义操作,它们可能缺少对某些计算机的依赖关系。使用详细日志进行安装并查找错误:msiexec/I[path to msi file]/l*vx[path to a text log file]谢谢,我遇到的最大问题是错误中的信息太少,我不知道从哪里开始。