【问题标题】:Visual Studio Setup project - force installation of a .DLL?Visual Studio 安装项目 - 强制安装 .DLL?
【发布时间】:2010-12-10 17:09:25
【问题描述】:

我有一个第三方 .DLL 更新,必须安装到我客户的计算机上。我们目前通过在 Visual Studio 2010 中创建的 MSI 使用自动安装

不幸的是,第三方 .DLL 的版本不正确,并且提供者没有增加它的文件版本(他们只增加了程序集版本)。第三方提供商是 Microsoft,因此等待他们解决问题是不现实的。我们需要立即在一次 MSI 更新中将新的 .DLL 提供给人们。目前,MSI 更新不会覆盖 .DLL

即使文件版本匹配,VS2010 安装项目中是否有强制覆盖 .DLL 的方法?

【问题讨论】:

    标签: visual-studio-2010 installation windows-installer


    【解决方案1】:

    如果您愿意进行 msi postbuild 调整,您可以点击文件表并执行“版本谎言”。另一个想法是不要将该 DLL 放入您的安装中。查找 Microsoft 的安装程序(如果存在),您可以将其放入引导程序或创建自己的安装程序并使用 AMUS 而不是 OMUS 作为版本规则。

    【讨论】:

    • 不能将 .DLL 包含在包中。没有 MSM 可以使用,我也无法更改开关安装参数。自动更新代码已经在现场运行。当它运行时,它使用基本上进行静默升级的命令行运行。你能详细说明一下“版本说谎”吗?
    • Version Lying 是您更新文件表以诱使 MSI 认为它的版本比实际版本更新的地方。有一些小问题,但基本上它会给你一个 Always Overwrite 单个组件。真正的解决方案是使用您的资源遵循正确的 SCM 实践(是的,很遗憾我们在这里谈论的是 Microsoft)。
    • 感谢进一步的阐述,但我不确定如何以编程方式解决切换版本的问题。谷歌没有太大帮助。您能否提供一个链接,其中包含一些关于如何进行此操作的说明?谢谢
    • 您必须执行以下操作,仅对文件表执行此操作。 FWIW,这是我从不使用 VDPROJ 的众多原因之一。它的能力太有限了。 blogs.msdn.com/b/astebner/archive/2007/05/28/2958062.aspx
    【解决方案2】:

    您不能将文件作为“文件”添加到安装程序中并与其他文件一起安装吗?不要将其设置为项目输出或任何预设安装操作。转到文件部分并右键单击“应用程序文件”文件夹,然后说>添加文件。导航到您想要的文件并选择它。

    【讨论】:

    • 没有。 MSI 有一个称为 File Costing 的过程,它看起来像文件版本 ( AssemblyFileVersion ) 而不是 AssemblyVersion 属性。如果新旧版本的DLL版本号相同,即使不同,微星也不会覆盖。
    • 即使您明确告诉它复制文件?您可以创建一个自定义安装程序类,从 MSI 创建的临时文件夹中复制 dll,然后在复制后将其删除?不过现在感觉有点恶心.....
    • 我尝试将文件作为常规文件放入包中,并将其从输出中排除。它没有部署在旧版本之上。
    • 使用安装程序类?为什么我没有想到呢?
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多