【问题标题】:InstallShield LE (with Visual Studio 2012) completely fails to detect dependenciesInstallShield LE(使用 Visual Studio 2012)完全无法检测依赖项
【发布时间】:2012-09-26 09:32:44
【问题描述】:

我正在做一场噩梦,试图让一个简单的安装程序在 InstallShield LE(VS 2012 附带的那个)中工作。有各种各样的问题我可以解决(比如我不能再做“全部重建”而不把一切搞砸——我需要在开发过程中简单地卸载 I​​nstallShield 项目)。但最重要的是,当我构建我的安装程序时,它包含了各种 DLL 的错误版本(包括属于我的项目的那些,以及像实体框架 DLL 这样的第 3 方的)。

执行“干净的解决方案”甚至没有解决我的解决方案中的 DLL 问题。它在我机器上的某个地方(在某种编译器临时目录中)找到了一个随机版本,并坚持要包含它。我最终通过在 Windows 资源管理器中进行搜索并删除它找到的每个文件来解决这个问题,但我担心下次我发布它仍然会设法选择错误的文件。

另外,我需要在我的机器上同时安装 .NET 4 和 .NET 4.5 版本的实体框架,但它选择了错误的版本进入我的安装程序。我不能删除我不希望它包含的那个。

这是一个绝对劣质的产品。我可以“升级”到完整版,看看是否能解决这些问题,但我最近使用 LE 版本的经验让我再也无法使用他们的任何产品。

有没有其他人遇到过类似的问题?你找到解决办法了吗?

【问题讨论】:

  • 是的。它正在添加我什至在我的 PC 上都找不到的旧版本的依赖 dll。我被朋克了吗?
  • 我所做的是在虚拟机上安装一个新的 Windows 副本并在那里进行测试。
  • InstallShield LE 是个笑话,付费版本的 POS 价格过高
  • 我在最新版本的“InstallShield 2015 Limited Edition for Visual Studio”中看到了所有这些相同的问题。糟糕的经历,真的很糟糕。

标签: visual-studio-2012 installshield-le


【解决方案1】:

旧帖子,所以也许这可以帮助您或其他人解决这个令人发指的问题(假设您遇到错误like -6225)。

症状:

  • 您可以轻松(重新)构建每个项目,包括 Install Shield 项目
  • 但是,如果您构建 Solution(多个项目的)错误似乎只是弹出

试试:

  • 在 VS 2012 中,右键单击您的解决方案并选择 Project Build Order
  • 即使顺序“看起来”正确,继续设置依赖关系
    • 例如您的安装项目取决于源项目(显然,但由于此工具不“知道”它需要一些帮助)。

我不确定这是否解决了“错误的 dll”问题(我还没有经历过那种痛苦……)但检查项目输出的建议可能会有所帮助……以上确实解决了我的问题问题。

是的,我同意,如果它甚至无法与 VS2010 及更低版本 设置和部署项目的易用性相提并论,那么它就是其中之一-开发人员必须处理的学习曲线(浪费时间)。 虽然不准备称它为劣质,但它确实有一些不错的(r)糖果 - 甚至是“有限”版本......

无论如何,我希望这会有所帮助....

更新 1

是的,我可以正式称 ISLE 确实是次品。我现在正经历着“丢失的 dll”(忘记错误的 dll,它们甚至不在 intall 文件夹中,请原谅五颜六色的语言但 WTF??!!)问题。 ISLE 无法识别正确的依赖关系——我不同意前面的答案。这个问题存在于我们自 VS 2005 以来的内置 Setup and Deployment Project 中。

同意对傻瓜 MS 移动的评论。

一旦我解决了这个问题,我会更新。

更新 2

我的修复(如果有更好的方法,请提供答案)。所有这些都在 ISLE UI 中完成:

  1. 扫描依赖项-右键项目primary output,选择Dependencies from scan at build

  2. 您将看到必须手动添加的依赖项,以红色图标表示
    我取消选中它们,这样我就可以摆脱 -6248 警告 这真的很奇怪,因为恕我直言,它应该是构建中的致命错误 - 这个安装/设置怎么可能如果它缺少依赖项工作? 警告继续构建,但它永远不会工作

  3. 然后(是)手动添加您在上面确定的依赖项...

顺便说一句,不确定这是否重要 - 我通过 导入 使用 ISLE (ISLE menu -> Visual Studio Deployment Project Import Wizard) 的 VS 2010 安装项目开始了整个过程。我不确定这是否真的很重要 - 回复:如果您从头开始(而不是导入),它仍然能够Dependencies from scan at build 吗?

VS2012 的设置和部署中的“进步”就这么多...

希望这会有所帮助!

【讨论】:

  • 2013 测试版修复了这个问题。
  • @BalthaZar - 你的意思是 VS 2013 和其中的 ISLE 插件?或者 VS 2013 是否会在本地恢复安装和部署项目(作为一种选择,而不是杀死 ISLE)?
  • 我的意思是 InstallShield LE 2013 版本,它处于 beta 状态,可以从 flexerasoftware 免费下载。
【解决方案2】:

我最近遇到了您描述的问题:控制台应用程序正确构建,在 bin 目录中具有最新版本的依赖项,但是当与 InstallShield LE 打包时,使用旧版本的依赖项 DLL。

如你所说:

执行“干净的解决方案”甚至没有解决 DLL 的问题 这在我的解决方案中。它在我机器上的某个地方找到了一个随机版本 (在某种编译器临时目录中),并坚持包含它。

就我而言,违规文件位于ASP.NET dynamic compilation cacheC:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\rootC:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root

清除这些目录的内容解决了问题。

顺便说一句,我考虑过添加一个构建操作来自动清空这些目录,但是如果没有所有权权限,我无法自动执行此操作。

【讨论】:

    【解决方案3】:

    每个设置工具都有其问题。请注意,没有工具可以准确检测您的应用程序依赖项。工具能做的最好的事情就是提出建议。这就是为什么大多数设置开发人员自己确定依赖项并手动将它们包含在安装程序中的原因。

    如果您对 InstallShield 不满意,可以尝试其他设置工具:http://en.wikipedia.org/wiki/List_of_installation_software

    高级安装程序的免费版本包括一个Visual Studio setup project,这可能会有所帮助。

    【讨论】:

    • 谢谢,我会看看其他的。很难接受您“没有工具可以准确检测您的应用程序依赖项”的说法。旧的 Visual Studio 2010 安装项目过去可以正常工作。让我明确一点:我的解决方案由几个相互依赖的项目组成。 InstallShield 安装程序未能为我的解决方案中的项目获取正确版本的 DLL,我仍然认为这很荒谬。更可笑的是,构建后所有必需的 DLL 都在 bin 文件夹中 - 为什么不去那里看看呢?!!
    • 不可接受。 VS Installer 2005/2008/2010 多年来为我们的项目运行良好。此外,ISLE 迁移向导也很糟糕。缺少大量 VS 2010 安装程序包设置并在安装过程中出现错误 1001。 MS 真的把球放在了这个上。
    • 必须同意。我能够阻止 VS2015(现在)安装程序项目的唯一方法是组件供应商发布了几个具有 OLDER 文件版本号的较新程序集。似乎解决这个问题的唯一方法是以 2799 美元外加 1300 美元的价格购买 InstallShield Professional(截至本文发布之日的价格)。
    【解决方案4】:

    您可以通过右键单击项目和发布向导将 exe 创建为单个图像或您选择的任何内容来发布您的项目,而不是使用安装屏蔽,最后它会处理所有依赖项。所以当安装由发布向导创建的 exe 时它会自动安装所有依赖项,例如 .net 框架,如果您的应用程序需要某些运行时框架,它会提醒您安装该框架。

    你可以看看这个

    http://msdn.microsoft.com/en-IN/library/31kztyey.aspx

    【讨论】:

    • 这对于 EXE 来说很好,但对于(例如)需要 DLL 注册等的 VSTO 加载项等没有多大帮助。
    【解决方案5】:

    我的 DLL 有问题。它正在从某个地方抓起一个年纪大得多的人。 GAC 中没有此 DLL 的内容。我什么都试过了。最后,我只是通过右键单击并选择添加在文件部分手动添加了该死的东西(ISLE)。我在我的 \obj\Release 文件夹中找到了 DLL。然后我再次构建了 Release (SingleImage),一切正常。

    【讨论】:

      【解决方案6】:

      您可以通过右键单击解决方案 -> 项目依赖项 -> 选择您的设置项目并检查它使用的项目来修复构建顺序问题(例如当您尝试重新构建解决方案时)。 (在VS2013中测试)

      我希望 InstallShield 项目在您选择其源文件时自动设置这些依赖项,但显然它没有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-19
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 2012-10-05
        • 1970-01-01
        相关资源
        最近更新 更多