在安装中释放Microsoft dll的最佳实践
我正在安装一个包含Microsoft.Web.Services3(WSE 3.0)DLL的安装程序。但是,我通常不喜欢在我们的安装中包括Microsoft DLL,除非通过Microsoft的可再发行文件。 Microsoft同时提供了开发人员和redist安装程序包。
因此,作为最佳实践,我应该在安装中包含单个DLL还是将其引用给WSE 3.0安装之一(假设它们尚未安装)?
解决方案
回答
如果不包含它,则至少应直接在站点上链接到它,或者让安装程序打开Web浏览器(甚至自动下载)。或者更好的是,在软件包中包含可重新分发的文件。
但是,如果DLL不是很大,并且我们怀疑几乎没有用户会使用它,那么出于更好的用户的利益,我会将其预包装在默认安装程序中。但是,对于那些想要较小安装程序的人来说,我们始终可以拥有一个不包含该安装程序的安装程序……很多其他供应商一直在这样做。
回答
检入安装程序是否安装了WSE 3.0,如果没有警告人员,请取消安装,如果可以正常继续,请取消安装。我不会将DLL包含在安装程序包中,因为它可能会很快过时,而且我不知道EULA是否会允许它。
回答
我相信MS EULA会阻止我们重新分发MS代码,除非它在可重新分发的程序包中。
适当的可再发行组件应处理任何其他准备工作,因此无论如何它可能是更好的选择。
回答
通常,它们的EULA禁止在可再发行软件包之外再分发任何Microsoft DLL,因此我们可能首先要检查该DLL的适当EULA。
通常,我更喜欢redist软件包,因为这样可以确保已正确"注册"到系统中,即,如果我们安装较新版本的redist,它将得到更新(如DirectX),或者如果它是旧版本,则不会被覆盖(也类似于DirectX)。
回答
感谢建议/评论!在尝试安装Windows Installer之后,我找到了包括WSE30 redist的最佳方法,并在未安装的情况下弹出对话框。
我知道仅包含DLL并不是最佳实践(并且违反了Microsoft的EULA),这就是为什么我感到奇怪的是,它试图将WSE DLL包含在重做器之外,尤其是当重做器是已在安装程序中注册(在属性下显示为准备工作)。
再次感谢。