2

我有一个ClickOnce应用程序部署到虚拟机,Windows 7 32 位。这个应用程序使用了一些COM组件,所以为了让应用程序正常工作,我为 COM 程序集和应用程序创建了清单,即

application1.exe 和 application1.exe.manifest

comAssembly1.dll 和 comAssembly1.x.manifest

以下信息来自这里

为确保应用程序正常工作,我在 COM 程序集上运行了 regsvr32,一切正常。然后我取消了该程序集的注册,并希望一切都能继续工作。可悲的是,事实并非如此。

我的第一个停靠港是检查我的清单。这些与上面引用的文章以及我读过的其他文章相匹配。所以我想检查清单是否正在加载。我正在运行进程监视器并设置了一个过滤器以仅显示对名为“application1.exe.manifest”的文件的访问,但我没有看到任何文件。有一点谷歌我似乎无法找到任何地方说明何时加载清单或由哪个进程加载。

你们之前有没有遇到过这个问题?如果有,您发现原因了吗?或者我的 ClickOnce 清单中是否需要一些魔法开关来告诉它使用清单文件?

对于我自己的信息,您希望什么时候看到您的应用程序清单被访问?

4

1 回答 1

1

如果可执行文件不包含嵌入式清单,Windows 才会使用单独的 .manifest 文件。问题是任何 C# 可执行文件已经有一个。一个由编译器自动生成的简单程序,它声明程序与 UAC 兼容。

项目 + 添加新项目,选择应用程序清单文件项目模板。它将在编辑器中打开,显示这些 UAC 条目。将您的无 reg-free COM 清单条目移动到此条目中,并在没有 .manifest 文件的情况下部署您的应用程序。

于 2012-12-07T14:43:05.637 回答