问题标签 [manifest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
15794 浏览

c++ - 使用 Visual Studios C++ 清单文件

我编写了一些代码,利用开源库来完成一些繁重的工作。这项工作是在 linux 中完成的,使用单元测试和 cmake 来帮助将其移植到 Windows。需要让它在两个平台上运行。

我喜欢 Linux,我喜欢 cmake,我喜欢我可以自动生成 Visual Studios 文件。就像现在一样,在 Windows 上,一切都将编译,它将链接并生成测试可执行文件。

然而,为了达到这一点,我不得不与 windows 斗争了几天,学习所有关于清单文件和可再发行包的知识。

据我的理解:

在 VS 2005 中,Microsoft 创建了 Side By Side dll。这样做的动机是,以前,多个应用程序会安装同一个 dll 的不同版本,导致以前安装和工作的应用程序崩溃(即“Dll Hell”)。并排 dll 解决了这个问题,因为现在每个可执行文件/dll 都附加了一个“清单文件”,用于指定应该执行哪个版本。

这一切都很好。应用程序不应再神秘地崩溃。然而...

Microsoft 似乎在每次发布 Visual Studios 时都会发布一组新的系统 dll。另外,正如我之前提到的,我是一名试图链接到第三方库的开发人员。通常,这些东西作为“预编译的 dll”分发。现在,当使用一个版本的 Visual Studio 编译的预编译 dll 链接到使用另一个版本的 Visual Studio 的应用程序时会发生什么?

根据我在互联网上阅读的内容,发生了不好的事情。幸运的是,我从来没有走到那一步——在运行可执行文件时,我一直遇到“MSVCR80.dll not found”问题,因此我开始涉足整个清单问题。

我最终得出的结论是,让它工作的唯一方法(除了静态链接一切)是所有第三方库必须使用相同版本的 Visual Studios 编译 - 即不要使用预编译的 dll - 下载源代码,构建一个新的 dll 并改用它。

这是真的吗?我错过了什么?

此外,如果情况似乎如此,那么我不禁认为微软出于邪恶的原因故意这样做。

它不仅会破坏所有预编译的二进制文件,从而使使用预编译的二进制文件变得不必要地困难,如果您碰巧在一家使用第三方专有库的软件公司工作,那么每当他们升级到最新版本的视觉工作室时 - 您的公司必须现在做同样的事情,否则代码将不再运行。

顺便说一句,linux如何避免这种情况?虽然我说我更喜欢在它上面进行开发并且我了解链接的机制,但我没有维护任何应用程序足够长的时间来遇到这种低级共享库版本控制问题。

最后,总结一下:这种新的清单方案是否可以使用预编译的二进制文件?如果是,我的错误是什么?如果不是,微软真的认为这会使应用程序开发更容易吗?

更新 - 一个更简洁的问题:Linux 如何避免使用 Manifest 文件?

0 投票
17 回答
79234 浏览

java - 在 NetBeans 中生成可执行 jar

我使用的是 NetBeans 6.5,由于某种原因,它不会“开箱即用”生成可执行 jar。

我将我的项目设置为主项目,在项目属性“运行”菜单中定义了主类,当我按 F6 运行它时它可以完美运行。

我查看了清单文件,它确实没有在那里定义主类,也省略了库依赖项。



我错过了什么吗?有没有办法(除了手动更改清单文件)来生成可执行的 jar 文件?

编辑:是的,我尝试清理和重建,它在 dist 文件夹中生成了 jar,仍然具有相同的 manifest.mf

0 投票
12 回答
109622 浏览

dll - 转储 Windows DLL 版本的命令行工具?

我需要一个命令行工具来转储标准 Windows DLL 版本信息,以便我可以通过 bash 脚本 (Cygwin) 来处理它。

作为一名 Java 开发人员,我不太习惯 Microsoft 开发工具(尽管我对 Microsoft Visual Embedded C++ 4.0 和 Microsoft Visual Basic 6.0 有一点经验)。

SO 所述,适当的工具似乎是mt.exe。然而,我发现获得这个小应用程序的唯一机会是下载 1.29 GB ISO 的Windows SDK for Windows Server 2008 和 .NET Framework。我不敢相信这是唯一的方法。

我还在 Internet 上找到了一个名为PEView的小应用程序,但它显示的信息太多(在我的情况下是无用的),而且它不是命令行应用程序。

Cygwin 中捆绑的标准objdump也可以转储有关 DLL 文件的一些信息,但我看不到转储 DLL 版本的选项。请注意,此工具转储的 MajorImageVersion、MinorImageVersion 和其他字段(带有 -p 选项)与自己的 DLL 版本无关。

关于做什么的任何替代方案?也许我错过了一些重要的 objdump 选项?mt.exe 是我唯一的选择吗?如果是这种情况,是否可以将其与 Windows SDK 分开获取?

0 投票
7 回答
70592 浏览

java - How do I read the manifest file for a webapp running in apache tomcat?

I have a webapp which contains a manifest file, in which I write the current version of my application during an ant build task. The manifest file is created correctly, but when I try to read it in during runtime, I get some strange side-effects. My code for reading in the manifest is something like this:

When I attach eclipse to tomcat, I see that the above code works, but it seems to get a different manifest file than the one I expected, which I can tell because the ant version and build timestamp are both different. Then, I put "META-INFFFF" in there, and the above code still works! This means that I'm reading some other manifest, not mine. I also tried

But the result was the same. What's the proper way to read the manifest file from inside of a webapp running in tomcat?

Edit: Thanks for the suggestions so far. Also, I should note that I am running tomcat standalone; I launch it from the command line, and then attach to the running instance in Eclipse's debugger. That shouldn't make a difference, should it?

0 投票
1 回答
1621 浏览

security - 使用解决方案框架在 Sharepoint 中部署 CAS 策略

我正在使用共享点解决方案机制部署我的 Web 部件。Untul 现在,一切正常,但是当我将 CAS 策略添加到 manifest.xml 文件时,部署无法正常工作。使用 CAS 策略部署解决方案时,没有错误,但没有创建策略文件,没有复制 dll,也没有将 SafeControls 条目添加到 web.config。我的 manifest.xml 文件如下所示:

以前有人遇到过这样的问题吗?在这一点上我已经没有想法了,所以我愿意接受建议。

0 投票
3 回答
2739 浏览

c++ - Visual Studio 2005 - C++ - 控制清单创建的因素

我试图弄清楚为什么调试版本会因“无法找到依赖程序集 microsoft.vc80.debugcrt”事件错误而崩溃。

删除所有内容(不是 .cpp 或 .h 的内容)并重新创建解决方案后 - 我仍然遇到问题。

谷歌搜索没有结果,重新安装 VS 并没有产生任何变化。

我确实在 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c 中有 dll。

我打开了 \debug\.exe.intermediate.manifest 文件,它有 2 个(dependentAssembly)条目:
第一个:name='Microsoft.VC80.DebugCRT' version='8.0.50608.0'
第二个:name='Microsoft.VC80.DebugCRT '版本='8.0.50727.762'

如果我删除一个并将另一个更改为 name='Microsoft.VC80.DebugCRT' version='8.0.50727.42'

我可以得到一个将开始的构建。

当然,我确实安装了 VS2008 - 但是控制版本的是什么?或者我怎样才能获得正确的调试 dll 版本来“坚持”。

VS2008是通过控制面板卸载的。

编辑:如果搜索 DebugCRT,则在注册表中找不到任何内容。
环境路径指向 VS8 文件夹。
c:\windows\winsxs\policies 文件夹中只有1个DebugCRT文件夹
(8.0.50.727.42)
c:\windows\winsxs\manifests文件夹只有.42版本的.cat和
.manifest.manifest文件(在上面的清单文件夹中)有 version="8.0.50727.42"

澄清:清单文件有 2 个“dependentAssembly”条目,每个条目都有不同的版本,而不是 .42。我可以删除 1 个条目并更改另一个条目以匹配 .42 以获取启动的调试版本。

EDIT2:我也在使用 boost 并且在 DLL 中有 .762 版本

0 投票
2 回答
6052 浏览

c++ - 将应用设置为需要海拔高度?

我正在为我们的一些产品开发新安装程序的引导应用程序。到目前为止,我一直依赖于我在某处读到的两件事:

  1. 默认情况下,名称包含“setup”或“install”的应用程序将运行提升。
  2. 运行提升的应用程序将以提升模式启动其他应用程序。

最近的测试发现这些陈述中的一个或两个都是错误的,因为我正在启动的应用程序之一是需要提升的第三方安装程序,并且由于提升要求而失败。

如何将我的应用程序设置为需要提升?我知道这与清单文件有关。当我在 Visual Studio 2008 中工作并生成清单文件时,我想知道在项目属性中输入什么以及在哪里需要提升。

0 投票
4 回答
3255 浏览

windows - 诊断 Windows 应用程序清单

Windows 应用程序清单的语法非常松散——无法识别的部分会被忽略。我如何诊断哪些部分被识别,哪些未被识别?

导致此问题的问题在于具有并行 UAC 清单的应用程序,其中指定的requestedExecutionLevel最高可用。这应该关闭 Vista 文件虚拟化,但事实并非如此。我想知道为什么。清单正在被使用,因为我通过故意引入语法错误进行检查,但我看不出有什么方法可以确定它是如何被使用的。

0 投票
2 回答
491 浏览

visual-studio-2008 - 有没有办法在 Visual Studio 2008 中指定应用程序需要管理员?

我看到很多关于如何嵌入清单文件以要求管理员的文章,但我发现的问题是我们自动增加版本号,所以静态清单文件似乎不起作用,因为我们' d 每次都必须更新版本号。

有什么方法可以让 VS 生成清单并自动嵌入它并使用 AssemblyInfo.cs 文件中的信息进行更新?

0 投票
1 回答
416 浏览

.net - .NET 是否支持 Windows Eventing 6.0?

我想使用 C# 应用程序中的 Windows Eventing 6 API 将消息记录到 Windows Server 2008 事件日志中的特定通道。关于如何使用它有一个很好的例子,但它只是 C++。在示例中提到 .NET 不支持 Windows Eventing 6。http://msdn.microsoft.com/en-us/magazine/cc163431.aspxhttp://msdn.microsoft.com中有 2 个示例/en-us/library/aa382690(VS.85).aspx

我的问题是如何在 C# 中做到这一点,或者你知道是否有.Net 支持这个 API。