我们的应用程序的“文档”是单一的二进制文件。
我们的客户询问我们是否可以将类似MS Office的文档属性添加到我们的文档文件中,以便用户更易于管理。我所说的更易于管理,是指Windows资源管理器能够在工具提示中显示常用文档属性。
我的研究似乎表明,我们应该考虑将OLE结构化存储作为数据文件的基础。我见过这种技术被称为MS结构化存储、OLE 2复合文档格式和Windows文件元数据。
我对使用OLE结构化存储的担忧是,Office 2007或2010似乎不再使用此文件格式,并且OLE结构化存储需要注册DSOFILE.DLL ActiveX组件,而我们的许多客户将无法使用该组件,因为他们在锁定的工作站上运行我们的软件,而用户没有安装软件的管理员权限。(我们的应用程序软件是纯XCOPY部署)。
希望能听到关于我们的选择的想法。
谢谢你,马尔科姆
发布于 2010-01-04 05:50:11
我非常确定您最好的答案是使用OLE复合文档。
微软可能已经停止使用它,但那是因为他们已经使用了XML文件格式。除非您愿意将当前的文件格式转换为XML,否则我认为您不会对新的标记标准感兴趣。
您可以让您的应用程序保存两个文件,一个XML文件仅用于标记,另一个文件用于二进制数据,但这只会给用户带来痛苦。OLE复合文档格式的全部要点是允许将多个“文件”绑定在一个文件中。
此外,如果现代Windows没有内置对OLE复合文档的支持,我会感到非常惊讶。我敢肯定,早在十多年前的Microsoft Word 6.0中,文档就以这种OLE复合文档格式保存。为什么Windows XP或更新版本需要额外的.DLL文件才能解析出标签?
使用OLE复合文档格式最好的一点是,无论什么情况,用户标签都将随文件一起使用:如果用户将文件写入文件服务器,如果用户在电子邮件中删除文件,如果用户将文件刻录到CD上,无论如何。(我写的第一个答案很糟糕,但我删除了它;即使它起作用了,它也会把用户标签放在文件之外,而且我想得越多,我就越不高兴。)
因此,我建议您尝试创建OLE复合文档,然后在Windows XP的标准安装中查看Windows资源管理器中的文件。看看你是否可以在不需要下载和安装ActiveX .DLL的情况下看到标签,我很确定它会工作的。(但我不再经常使用Windows,所以我不能方便地为您测试它。)
编辑:好的,我刚刚做了一个测试。我在工作,这里有一台视窗电脑。我使用Word2007制作了一个文档,并将该文档另存为Word97格式。我查看了Windows资源管理器中的文档属性;在标记中可以看到作者姓名。我在“注释”中添加了文本,然后在Word 2007中打开了该文件。然后我可以查看评论(点击左上角的"office“图标圆圈,选择”准备“,选择”属性“)。
因此,我的理论有一些证据来支持它:我不需要安装任何特殊的软件,我的Windows资源管理器只使用带有标签的OLE复合文档格式的Word文件。(可能是Microsoft Office安装了一些特殊的.DLL,以便在Windows Explorer中使用标记;我确实在那台计算机上安装了Microsoft Office2007。但是您的客户可能也有Microsoft Office,所以即使是这样,我仍然认为这是最好的解决方案。)
我建议你在谷歌上搜索"OLE复合文档格式“,看看如何编写这种格式。我在这里找到了一个如何读取标记的示例:http://support.microsoft.com/kb/186898
发布于 2010-01-05 07:44:22
在Windows2000或更高版本上,除了使用OLE复合文档之外,您还可以使用store the summery information in the NTFS file metadata,以便Windows资源管理器或Windows桌面搜索等应用程序可以使用属性页、工具提示、列和搜索中的属性。
https://stackoverflow.com/questions/1996162
复制相似问题