我们开发了一种标准VSTO插件的产品(Word 2010和Word 2013,仅限x86).默认情况下,安装它时,会为所有用户安装它(即,将插件注册表项插入HKLM - HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins).
当该值LoadBehaviorREG键值设置为0x3(即"在启动时加载"),该插件工作完全正常,但是当我们设定的值LoadBehavior来0x10(即"按需加载"),该插件无法正常工作,我们会期望:
由于UAC(并且Word没有提升),LoadBehaviorHKLM中的值不会更改为0x10,0x9而是通过在HKCU配置单元中创建LoadBehavior密钥(带值0x9)来覆盖.
不幸的是,我们发现,这个HKCU重写值不考虑,除非清单关键是存在于HKCU蜂巢沿LoadBehavior).有关此相关主题的更多信息:https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
这个问题的"明显"补救措施是Manifest在安装时或每个用户第一次运行插件时为每个用户(以及HKLM)写入HKCU .但是这种方法有一些严重的缺点:
难道不是从HKLM获得清单中的错误,其中LoadBehavior适当地设置在HKCU?我认为如果LoadBehaviorHKLU中的HKLM可以被覆盖而不需要Manifest覆盖价值,那么这个问题就会得到解决.
有谁知道克服这个问题的方法?
我有一个Office插件,它使用以下后台XML将自定义UI元素添加到Microsoft Word后台:
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<backstage onShow="Backstage_OnShow">
<tab idMso="TabSave">
<firstColumn>
<taskFormGroup idMso="SaveGroup">
<category idMso="Save">
<task id="myCustomTask" label="My Custom Task" insertAfterMso="ButtonTaskDynamicServiceProvider">
<group id="myGroupInTabSave" label="Custom functionality" helperText="This group contains custom functionality.">
<primaryItem>
<button id="myButton" label="My Button" onAction="CallMe" />
</primaryItem>
</group>
</task>
</category>
</taskFormGroup>
</firstColumn>
</tab>
</backstage>
</customUI>
Run Code Online (Sandbox Code Playgroud)
这是此处描述的修改"另存为"对话框的确切基本情况.
在我的机器上,它在"另存为"下没有显示任何内容.但是,我确实在后台显示时调用了以下函数:
public void Backstage_OnShow(object contextObject) {
// It hits this method.
}
Run Code Online (Sandbox Code Playgroud)
UI无法显示的原因是什么,以及如何调试此处发生的事情?我尝试Show add-in user interface errors在"常规"部分的"Word选项"的"高级"选项卡中打开,但据我所知,它不会向我显示任何错误.
不确定它是否有帮助,但我们的功能区继承了IRibbonExtensibility.
我们还发现这种逻辑有时适用于某些机器而不适用于其他机器.我无法理解为什么......我可以告诉你的一件事是,这个插件的类型是注册的,regasm而不是使用path|vstolocalOutlook注册表下的注册表项安装的插件.换句话说,我们正在使用regasm安装插件. …
我正在开发一个Word 2016 Addin,我收到了一个客户端(通过Sentry记录)的错误,我在复制时遇到了麻烦.它发生在Word 16.11中macOS Sierra 10.12.6上的Dialog窗口中.
window.external.RegisterEvent is not a function.
(In 'window.external.RegisterEvent(n,t,i,r)', 'window.external.RegisterEvent' is undefined)
Run Code Online (Sandbox Code Playgroud)
该错误源于单词API脚本https://appsforoffice.microsoft.com/lib/1/hosted/word-mac-16.00.js并查看Github上的调试代码,它似乎来自这一行.
有没有人知道为什么会这样?它没有发生在任何其他平台上,我在本地复制它时遇到了麻烦.
提前致谢.如果需要,我很乐意提供更多信息.
注意:在Addin提交审核过程中发生此错误导致提交失败 - 因此需要跟踪来源.
我正在尝试将 Word 加载项发布到 Microsoft App Store 并继续因“功能区中的 1100.5.6.2 默认图标”而被拒绝“优惠的功能区图标在 Windows 上的 Microsoft 365 中显示默认图标,字 (16.0.13426.20330) 64 位。'。我在清单文件中包含了一个带有 DefaultValue 的 IconUrl,以及在 OfficeTab 下定义的每个大小的图标,但在审查时它仍然没有加载图标。任何帮助表示赞赏。
在我的Word加载项中,我有一个Document包含特定内容的Word 对象Section.在这Section,我附加一个Shape:
var shape = section.Headers[WdHeaderFooterIndex.wdHeaderFooterFirstPage].Shapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect1, "Example text...", "Calibri", 72, MsoTriState.msoFalse, MsoTriState.msoFalse, 0, 0, section.Headers[WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range) as Shape;
Run Code Online (Sandbox Code Playgroud)
我的问题是一些Word文档模板有图像或其他东西出现在我的形状之上.最初,我认为设置Z顺序足以解决这个问题:
shape.ZOrder(MsoZOrderCmd.msoBringToFront);
Run Code Online (Sandbox Code Playgroud)
它没.所以我的问题是,我怎样才能绝对设置我的Z顺序Shape,或者换句话说,我还需要做些什么来设置才能Shape让它成为你在文档中看到的最顶层的东西(意思是,它出现在所有其他事物之上)?
我们的一位客户在尝试激活他们创建的应用程序时遇到问题。
该应用程序是免费发布的。
位置:https : //store.office.com/en-001/app.aspx?assetid=WA104379484&ui=en-US&rs=en-001&ad=US&appredirect=false
它被不同的用户多次下载并且运行良好。但是,对于某个特定用户,在尝试安装和使用该应用程序时,Excel Online 中会显示一条错误消息:
“加载项警告。此加载项的许可证信息丢失或已过期,因此它的功能可能有限”
我浏览了以下文档:
https://dev.office.com/officestore/docs/add-in-license-schema
但是,我不确定该问题是否与 Office 商店中的应用程序发布/许可有关,因为该问题特定于单个用户。我尚未与最终用户建立通话并解决问题。在我继续之前,我想检查一下您是否遇到过这个错误。
任何线索都会非常有帮助。
先感谢您!
最好的问候 Saptarshi
我有一个Word的自定义插件(也可能是Excel).
插件有一个带有多个组的功能区和多个控件(按钮).
这是一个正在进行的项目,一些功能区按钮供用户使用,一些用于测试/开发目的.
当我将产品发送到客户端时,我只显示某些按钮.我希望测试按钮完全不可见/不可访问.我尝试将测试按钮/组设置为visible = false.
这是有效的,因为功能区上没有按钮,但如果用户进入Word的快速访问工具栏>"更多命令">"从下选择命令"下拉列表并选择我的自定义插件...
然后用户可以看到我的所有按钮.即使是那些没有标签的人.
我尝试在功能区加载方法中循环控件并将测试控件设置为enabled = false,locked = true,generatemember = false,但这些都不会隐藏QAT菜单中的按钮.我也尝试过control.Dispose() - 没有快乐.
无论如何设置一个功能区按钮的属性,使其在QAT中完全不可见并且用户无法访问?
非常感谢
简而言之,我创建了一个Word VSTO插件,它可以在许多机器上完美运行,但无法仅在一台机器上加载.我不知道问题是在程序集名称中,还是缺少DLL.
如何完成以及错误消息的详细信息如下:
1- IDE:Microsoft Visual Studio社区2013.
2- Office版本安装:2010年适用于所有机器
3-使用的.NET框架:4.0.
4-目标计算机安装了vstor_redist.exe文件.
5-安装VSTO文件的方法是将VSTO复制到程序文件中,然后运行它.这适用于所有机器,即使是那些无法加载添加的机器.
6- Addin有一个色带控件.不知道这是否对此事有任何影响.
7-开发机器:windows 7 64bit
8-测试机器:windows 7 64bit.(即使是无法加载插件的那个)
9-当程序集仅为一台机器加载时,我得到的错误信息是:
Could not load file or assembly 'IDMSWord2010AddinProject, Version=4.3.0.0, Culture=neutral, PublicKeyToken=83105d2b5774c812' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
************** Exception Text **************
System.IO.FileLoadException: Could not load file or assembly 'IDMSWord2010AddinProject, Version=4.3.0.0, Culture=neutral, PublicKeyToken=83105d2b5774c812' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) …Run Code Online (Sandbox Code Playgroud) 我在一台计算机上运行Word VSTO加载项时遇到一个奇怪的问题,运行Visual Studio项目会打开word,但据我所知,并没有尝试启动加载项。
我到了这一点,因为我不小心在“管理COM加载项”页面上为“加载项”单击了“删除”,而不是在失败后重新启用它。
我想知道如何重新启用已删除的加载项-我在想,也许某个地方需要删除某个注册表项。
我尝试安装和卸载发布的版本,看是否能唤醒所有内容,并且尝试更改VS项目的路径,以防万一有所作为(以及各种重新启动,清理,重建,本地删除)并从git等中重新克隆),但我找不到使它再次正常运行的方法。在另一台机器上,从Git克隆加载项,然后在Visual Studio中打开它,一切正常。
我尝试通过COM加载项上的select DLL(或select 。)对话框重新添加,但是我选择的任何内容似乎都不是有效的加载项。
任何有助于弄清如何返回工作环境的帮助将不胜感激。
编辑下面 有很多事情-所以我想澄清一下成功的解决方案是Office的在线修复
我正在使用可打开文档的Office 365 Word加载项。
当我们通过 打开文档时context.application.createDocument(base64string).open(),它会启动一个新窗口,而不是在当前浏览器选项卡(如果是 Web 插件)或当前 word 实例(如果是 Windows 插件)中打开文档。
这是我的用例:
检查是否已经有一个打开的文档并要求用户保存或丢失更改。
有一个 API 来关闭当前打开的文档,例如 context.document.close();
通过 打开一个新文档context.application.createDocument(base64string).open(),以便在当前窗口中打开文档而不是在新的 word 实例中打开。
有什么解决方法可以实现这一目标吗?
交叉张贴在这里。
谢谢。
office-addins office365 word-addins office-js word-web-addins