我正在开发一个想要包含 Microsoft.Web.Services3 (WSE 3.0) DLL的设置。但是,我通常不喜欢在我们的安装中包含 Microsoft DLL,除非通过 Microsoft 的可再发行组件。Microsoft 提供了开发人员和 redist 安装包。
因此,作为最佳实践,我应该在我的安装中包含单个 DLL 还是将它们引用到 WSE 3.0 安装之一(假设他们尚未安装它)?
我正在开发一个想要包含 Microsoft.Web.Services3 (WSE 3.0) DLL的设置。但是,我通常不喜欢在我们的安装中包含 Microsoft DLL,除非通过 Microsoft 的可再发行组件。Microsoft 提供了开发人员和 redist 安装包。
因此,作为最佳实践,我应该在我的安装中包含单个 DLL 还是将它们引用到 WSE 3.0 安装之一(假设他们尚未安装它)?
通常,在可再分发包之外再分发任何 Microsoft DLL 都是其 EULA 所禁止的,因此您可能首先要检查该 DLL 的适当 EULA。
一般来说,我更喜欢 redist 包,因为它可以确保它正确地“注册”到系统中,即如果你安装了新版本的 redist,它会得到更新(如 DirectX),或者如果它是旧版本则不会被覆盖(也如DirectX)。
检查安装程序是否安装了 WSE 3.0,如果它没有提醒用户并取消安装,如果它继续正常。我不会在您的安装包中包含 DLL,因为它可能很快就会过时,而且我不知道 EULA 是否允许它。
我相信 MS EULA 会阻止您重新分发 MS 代码,除非它位于可再分发包中。
适当的可再发行组件应处理任何其他先决条件,因此无论如何它可能是更好的选择。
如果您不包含它,您至少应该直接在您的网站上链接到它,或者让您的安装程序打开网络浏览器(甚至自动下载)。或者更好的是,将可再发行组件包含在您的软件包中。
但是,如果 DLL 不是很大并且您怀疑很少有用户会拥有它,那么为了更好的用户,我会在默认安装程序中预先打包它。但是,对于那些想要更小的安装程序的人来说,您总是可以拥有一个不包含它的安装程序……许多其他供应商一直在这样做。
感谢您的建议/评论!在与 Windows 安装程序设置搏斗后,我找到了包含 WSE30 redist 并在未安装时弹出一个对话框的最佳方法。
我知道简单地包含 DLL 不是最佳实践(并且反对微软的 EULA),这就是为什么我认为它试图在 redist 之外包含 WSE DLL 很奇怪,尤其是当 redist 是向安装程序注册(它显示为属性下的先决条件)。
再次感谢。