我有一个ClickOnce应用程序部署到虚拟机,Windows 7 32位。这个应用程序使用了一些COM组件,所以为了使应用程序工作,我已经为COM程序集和应用程序创建了清单,即
application1.exe和 application1.exe.manifest
comAssembly1.dll和 comAssembly1.x.manifest
来自here的信息。
为确保应用程序正常运行,我在COM程序集上运行了regsvr32,一切正常。然后我取消了注册大会,并希望一切都能继续工作。可悲的是,事实并非如此。
我的第一个停靠点是查看我的清单。这些与上面引用的文章以及我读过的其他文章相符。所以我想检查是否正在加载清单。我有Process Monitor正在运行,并且已经过滤器以仅显示名为“application1.exe.manifest”的文件的访问权限,我看不到任何内容。有一点谷歌我似乎无法找到任何说明何时加载清单或由哪个过程。
你们之前有没有遇到过这个问题?如果是这样,你有没有发现原因? 或者我的ClickOnce清单中是否需要一些神奇的开关来告诉它使用清单文件?
对于我自己的信息,您希望何时会看到您正在访问应用程序清单?
答案 0 :(得分:1)
如果可执行文件不包含嵌入式清单,则Windows将仅使用单独的.manifest文件。问题是任何C#可执行文件都有一个。这是一个由编译器自动生成的简单程序,它声明程序与UAC兼容。
Project + Add New Item,选择Application Manifest File项目模板。它将在编辑器中打开,显示那些UAC条目。将您的免注册COM清单条目移到此清单条目中,并在没有.manifest文件的情况下部署您的应用程序。