我正在研究一个设置 想要包含 Microsoft.Web.Services3 (WSE 3.0) DLL. 。然而,我通常不喜欢在我们的安装中包含 Microsoft DLL,除非通过 Microsoft 的可再发行版本。Microsoft 提供了开发人员安装包和 redist 安装包。

因此,作为最佳实践,我应该在安装中包含单个 DLL 还是将它们引用到 WSE 3.0 安装之一(假设他们尚未安装它)?

有帮助吗?

解决方案

通常,其 EULA 禁止在可再发行包之外重新分发任何 Microsoft DLL,因此您可能首先需要检查该 DLL 的相应 EULA。

一般来说,我更喜欢 redist 包,因为这可以确保它正确“注册”到系统中,即如果您安装了较新版本的 redist,它会更新(如 DirectX),如果是旧版本(也如 DirectX),则不会被覆盖。

其他提示

检查安装程序是否安装了 WSE 3.0,如果没有提醒用户并取消安装,如果正常继续。我不会将 DLL 包含在您的安装包中,因为它可能很快就会过时,而且我不知道 EULA 是否允许这样做。

我相信 MS EULA 会阻止您重新分发 MS 代码,除非它位于可再分发包中。

适当的可再发行版本应该能够满足任何其他先决条件,因此无论如何它可能是更好的选择。

如果您不包含它,您至少应该直接在您的网站上链接到它,或者让安装程序打开它的网络浏览器(甚至自动下载)。或者更好的是,将可再发行版本包含在您的软件包中。

但是,如果 DLL 不是很大,并且您怀疑很少有用户会拥有它,那么为了更好的用户的利益,我会将其预先打包在默认安装程序中。但是,对于那些想要较小安装程序的人来说,您始终可以拥有一个不包含它的安装程序......许多其他供应商一直在这样做。

感谢您的建议/评论!在与 Windows 安装程序设置进行斗争之后,我找到了包含 WSE30 redist 的最佳方法,并在未安装时弹出一个对话框。

我知道简单地包含 DLL 并不是最佳实践(并且违反了 Microsoft 的 EULA),这就是为什么我认为它试图在 redist 之外包含 WSE DLL 很奇怪,尤其是当 redist 是向安装程序注册(它在属性下显示为先决条件)。

再次感谢。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top