在安装程序中释放 Microsoft dll 的最佳实践
我正在进行一个设置,希望包含 Microsoft.Web.Services3 (WSE 3.0) DLL。 然而,我通常不喜欢在我们的安装中包含 Microsoft DLL,除非通过 Microsoft 的可再发行组件。 Microsoft 提供了开发人员安装包和 redist 安装包。
因此,作为最佳实践,我应该在安装中包含单个 DLL 还是将它们引用到 WSE 3.0 安装之一(假设他们尚未安装它)?
I'm working on a setup which wants to include the Microsoft.Web.Services3 (WSE 3.0) DLL. However, I typically do not like including Microsoft DLL's in our installs except by way of Microsoft's redistributables. There is both a developer and a redist install package available from Microsoft.
So, as a best practice, should I include the single DLL in my install or refer them to one of the WSE 3.0 installs (assuming they do not already have it installed)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
通常,其 EULA 禁止在可再发行包之外重新分发任何 Microsoft DLL,因此您可能首先需要检查该 DLL 的相应 EULA。
一般来说,我更喜欢 redist 包,因为这可以确保它正确“注册”到系统中,即如果您安装较新版本的 redist,它会更新(如 DirectX),或者如果它是旧版本(也如DirectX)。
Usually, redistributing any of Microsoft DLLs outside of the redistributable package is forbidden by their EULA, so you might first want to check the appropriate EULA for that DLL.
Generally, I would prefer the redist package since that makes sure that it's correctly "registered" into the system, i.e. if you install a newer version of the redist it gets updated (like DirectX) or not overwritten if it's an older version (also like DirectX).
检查安装程序是否安装了 WSE 3.0,如果没有提醒用户并取消安装,如果正常继续。 我不会将 DLL 包含在您的安装包中,因为它可能很快就会过时,而且我不知道 EULA 是否允许这样做。
Check in the installer if WSE 3.0 is installed and if it isn't alert the person and cancel the install, if it is continue normally. I wouldn't include the DLL in your setup package, because it could get out dated pretty fast, and I don't know if the EULA will allow it.
我相信 MS EULA 会阻止您重新分发 MS 代码,除非它位于可再分发包中。
适当的可再发行版本应该能够满足任何其他先决条件,因此无论如何它可能是更好的选择。
I believe the MS EULA prevents you from redistributing MS code, unless its in a redistributable package.
A proper redistributable should handle any other prerequisites, so its probably the better choice anyways.
如果您不包含它,您至少应该直接在您的网站上链接到它,或者让安装程序打开它的网络浏览器(甚至自动下载)。 或者更好的是,将可再发行版本包含在您的软件包中。
但是,如果 DLL 不是很大,并且您怀疑很少有用户会拥有它,那么为了更好的用户的利益,我会将其预先打包在默认安装程序中。 但是,对于那些想要较小安装程序的人来说,您始终可以拥有一个不包含它的安装程序......许多其他供应商一直在这样做。
If you don't include it you should at the very least link to it directly on your site or have your installer open the web browser to it (or even download it automatically). Or better yet, include the redistributable in your software package.
However, if the DLL is not very large and you suspect that few users will have it, in the interest of a better user I would prepackage it in the default installer. However, you can always have an installer that does not include it for those who want a smaller installer... a great deal of other vendors do this all the time.
感谢您的建议/评论! 在与 Windows 安装程序设置进行斗争之后,我找到了包含 WSE30 redist 的最佳方法,并在未安装时弹出一个对话框。
我知道简单地包含 DLL 并不是最佳实践(并且违反了 Microsoft 的 EULA),这就是为什么我认为它试图在 redist 之外包含 WSE DLL 很奇怪,尤其是当 redist 是向安装程序注册(它在属性下显示为先决条件)。
再次感谢。
Thanks for the suggestions/comments! After wrestling with windows installer setup I figured out the best way to include the WSE30 redist and pop up a dialog if it is not installed.
I'm aware of it not being best practice (and against Microsoft's EULA as mentioned) to simply include the DLL, which is why I thought it strange that it was trying to include the WSE DLL outside of the redist, especially when the redist is registered with the installer (it shows up as a pre-req under properties).
Thanks again.