无法在Visual Studio 2010安装程序项目中添加自定义操作

时间:2011-02-18 19:28:07

标签: c++ visual-studio-2010 installer installation

我将一个工作项目从Visual Studio 2008转换为VS2010。 c ++解决方案构建了一个可执行文件和3个DLL,以及一个Windows安装程序项目。

转换为VS2010后,我收到一个构建错误“无法从项目输出组'Primary Output'构建名为'来自xxxx(Active)的主输出'的自定义操作',因为项目输出组没有密钥文件。”

我删除并重新添加了输出组,然后尝试添加自定义操作。可执行输出未列为自定义操作的候选者。然后我注意到当我选择可执行的“主输出”属性时,“KeyOutput”属性设置为(None)并且显示为灰色。

重新访问VS2008版本时,KeyOutput属性未显示为灰色。我在MSDN上找到了错误消息,其中有一个无用的修复:

“删除自定义操作,并将其替换为指向具有密钥文件的项目输出组的自定义操作。”

显然技术作家也不知道如何修复它。请记住原始版本正常工作和安装。我认为根本问题是 KeyOutput 属性被禁用的原因 - 但为什么呢? (查看“输出”时,它正确显示每个项目中的exe或dll)

3 个答案:

答案 0 :(得分:3)

我有类似的问题,我弄清楚为什么安装项目找不到密钥输出文件。

我的项目输出目录定义为$(SolutionDir)\ bin \ $(平台)。 SolutionDir已经有一个尾部反斜杠,因此\ bin在路径中放置了一个双反斜杠。该项目将很好地建设,但安装项目无法解决关键输出。将输出设置为$(SolutionDir)bin \ $(平台)\解决了该问题。

答案 1 :(得分:2)

经过进一步调查后,我发现这是Visual Studio 2010中的一个错误。

如果为项目指定的输出名称与项目本身的名称不同,则无法做正确的事情。

要重现此,请更改

Project properties-> Linker-> General-> OutputFile from $(OutDir)$(TargetName)$(TargetExt)就像$(OutDir)foobar.exe

然后,项目将KeyOutput值更改为空,并且不可用于安装中的自定义操作。除了使用默认项目命名约定之外,没有其他解决方法。

答案 2 :(得分:1)

很晚才回答,但希望它可以节省2个小时我用VS 2010砸到墙上的人(这是一个非常糟糕的软件 - 加载速度慢,每个devenv占用300兆的工作内存,现在这个bug !!!!! ????)这里去了 - Roger Dunn是正确的说是项目属性 - > Linker-> General-> OutputFile导致问题 - 如果你有像$(OutDir)foobar.exe这样的自定义动作barfs,如果你改变它回到$(OutDir)$(TargetName)$(TargetExt)它再次起作用!

解决方法是将宏$(TargetName)更改为foobar,然后将用户$(OutDir)$(TargetName)$(TargetExt)更改为您的exe的自定义名称。

$(TargetName)可以在 - 项目属性 - >配置属性 - > general-> TargetName。

更改

但这对VS 2010来说真是浪费时间。