InstallShield LE(使用Visual Studio 2012)完全无法检测依赖关系

我有一个噩梦试图获得一个简单的安装程序在InstallShield LE(与VS 2012一起发行)工作。 我可以解决各种各样的问题(比如我不能再做“重build所有”,而没有把所有东西搞乱 – 我只需要在开发过程中卸载InstallShield项目)。 但最重要的是,当我构build我的安装程序时,它包含各种DLL的错误版本(包括属于我的项目的一部分,以及像Entity Framework DLL这样的第三方DLL)。

做一个“干净的解决scheme”甚至没有解决我的解决scheme中的DLL的问题。 它是在我的机器上的某个地方(在某种编译器的临时目录中)find一个随机的版本,并坚持把它包括进去。 我最终通过在Windows资源pipe理器中进行search并删除它find的每个文件来解决这个问题,但是我担心下次我发布一个版本时,它仍然会select错误的文件。

另外,我需要在我的机器上同时安装.NET 4和.NET 4.5版本的entity framework,并且选错了我的安装程序。 我不能删除我不希望它包含的那个。

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

有没有其他人有类似的问题? 你find解决scheme吗?

老post,所以也许这可以帮助你或其他人经历这个令人愤怒的问题(假设你正在经历错误, 如-6225 )。

症状:

  • 您可以(重新)构build每个项目,包括Install Shield项目
  • 然而,如果你构build(多个项目的) 解决scheme似乎只是popup

尝试:

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

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

是的,我同意,如果它甚至不能与VS2010相提并论,以下的 设置和部署项目易于使用,那么它就是开发人员不得不面对的另一个学习曲线(浪费时间)。 不准备称其为劣质的,它确实有一些不错的(r)糖果 – 即使是“有限”的版本….

无论如何,我希望这有助于….

更新1

是的,我可以正确地打电话给ISLE 。 我现在正在经历着“失踪的dll”(忘记错误的dll,它们甚至不在intall文件夹中,请原谅那些色彩斑斓的语言,但是WTF?!!)的问题。 ISLE无法识别适当的依赖关系 – 我不同意以前的答案。 我们自VS 2005以来的内置Setup and Deployment Project 存在这个问题。

同意关于骨头MS移动的评论。

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

更新2

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

  1. 扫描依赖项 – 右键单击​​项目主输出Dependencies from scan at buildselectDependencies from scan at build 第1步扫描查看缺少的依赖关系

  2. 您将看到需要手动添加的依赖关系,用红色图标表示 步骤2确定缺少的依赖关系
    我没有选中他们,所以我可以摆脱-6248警告这真的很奇怪,因为恕我直言,这应该是一个致命的错误在构build – 如何安装/设置可能工作,如果它缺less依赖? 警告继续构build,但它永远不会工作

  3. 然后(是) 手动添加您确定的依赖关系…

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

对于VS2012的设置和部署中的“进度”…

希望这可以帮助!

我最近遇到了你所描述的问题:一个控制台应用程序正确地build立,在bin目录中有最新版本的依赖关系,但是当与InstallShield LE一起打包时,使用老版本的依赖关系DLL。

正如你所说:

做一个“干净的解决scheme”甚至没有解决我的解决scheme中的DLL的问题。 它是在我的机器上的某个地方(在某种编译器的临时目录中)find一个随机的版本,并坚持把它包括进去。

在我的情况下,有问题的文件位于ASP.NETdynamic编译caching C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\rootC:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root

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

顺便说一句,我想添加一个构build动作来自动清空这些目录,但是我无法自动完成这些操作,而没有降低所有权的权限。

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

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

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

而不是使用安装盾,你可以发布你的项目,只需右键单击项目和发布向导创buildEXE作为单一的形象或任何您的select最后它照顾所有的依赖关系..所以当安装EXE发布向导创build比它自动安装所有的依赖这样的.net框架和如果你的应用程序所需的一些运行时框架比它会提醒你安装一个。

你可以看看这个

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

我的DLL有问题。 它从某个地方攫取了一个更古老的东西。 这个DLL没有什么是GAC的。 我尝试了一切。 最后,我通过右键单击并select添加,在“文件”部分中手动添加了文件(ISLE)。 我在我的\ obj \ Release文件夹中find了这个DLL。 然后我再次构build发布(SingleImage),一切工作正常。

您可以通过右键单击解决scheme – >项目依赖关系 – >select您的设置项目并检查它使用的项目来修复构build顺序问题(例如,当您尝试重build解决scheme时)。 (在VS2013testing)

我希望InstallShield项目在select源文件时自动设置这些依赖关系,但显然不是这样。