gpt4 book ai didi

ms-word - 如何使用 WIX 打包 VSTO Word 插件以进行部署(到 Office 32 位)?

转载 作者:行者123 更新时间:2023-12-02 20:58:41 32 4
gpt4 key购买 nike

我开发了一个 VSTO Word add in在 VS 2017 Pro 中。工作正常,准备部署。但是,我找不到包装我的 VSTO 的工作程序。 Word add in用于我的开发机器以外的机器。对于任何特定的机器,我需要将它部署一次,并让任何可能使用其帐户登录的用户都可以使用它。

第一次遇到 this ,但它涉及使用 InstallShield Limited Edition,该版本显然不再适用于 VS 2017。

试过 this但它的一些步骤似乎缺少部分或说“做 x”而没有解释如何。

尝试了“InnoSetup”和“bovendor/VstoAddinInstaller”,但遵循“bovendor”过程会导致“Innosetup”编译器抛出错误(bovender 指示的节缺少必需的元素)。无法从 bovendor 获得响应。

已搜索 Microsoft docs,只是找不到程序。任何人都可以提供打包 VSTO Word 插件以进行部署的过程吗?

更新
使用 WiX 工具集成功打包并部署了我的加载项。看我下面的回答

最佳答案

更新 (11/26/2019):如果您的设置使用 64 位 Office,请参阅 How do you package a VSTO Word addin for deployment to a 64-bit Windows 10 machine running Microsoft Office 64 bit using WIX?

成功打包部署我的add-in使用 WiX工具集

信用:我使用 Pieter van der Westhuizen's example 学到了大部分内容在 Add-in Express Blog .

我用过 Visual Studio Pro 2017 , .NET 4.6.1 , 和 C#在我的开发机器(64 位)上实现我的 VSTO Word加入。

我的要求是部署 add-in一次到 64 位生产机器(即 Citrix 虚拟桌面主镜像),因此它可供登录到生产计算机(即基于主镜像登录到虚拟桌面)的任何用户使用。 32 位版本的 Word 2013 安装在主镜像上。

据我了解,这意味着“插件”必须安装在“C:\Program Files (x86)”下,原因有两个:

  • 因此所有用户都可以访问加载项,并且
  • 在 (x86) 下,因为它是 Word 的 32 位版本)。

  • 另外,因为所有用户都需要访问 add-in , 所需 VSTO注册表项设置位于根目录下 HKLM (而不是 HKCU )。本质上,此“所有用户”设置与“一个用户”设置相反 Click-Once设置。没什么,我在一个没有连接到互联网的飞地。所以,我使用的所有软件都是在别处下载的,然后携带到飞地中并安装到本地。

    我的 VSTO 的发布文件单词插件(即在 C:\....\Visual Studio 2017\Projects\FooAddIn\FooAddIn\bin\Release 中)是:
  • FooAddIn.dll
  • FooAddIn.dll.manifest
  • FooAddIn.vsto
  • Microsoft.Office.Tools.Common.v4.0.Utilities.dll

  • 我做了什么
  • http://wixtoolset.org/releases/ 将“WiX”v3.11.1 下载并安装到我的开发机器上.
  • https://marketplace.visualstudio.com/items?itemName=RobMensching.WixToolsetVisualStudio2017Extension 将“Wix 工具集 Visual Studio 2017 扩展”下载并安装到我的开发机器上
  • 打开我的 add-in项目FooAddIn使用 VS 2017并在 Solution Explorer , 鼠标右键单击顶行 Solution节点并单击 Add -> New Project .
  • Add New Project对话框,点击 v3WiX Toolset然后点击 Setup Project for WiX v3 .我将新项目命名为 FooAddInSetup . Visual Studio Solution Explorer显示 Solution FooAddIn (2 projects) , 项目 FooAddIn , 和项目 FooAddInSetup .
  • FooAddInSetup -> References ,添加了对 C:\Program Files (x86)\WiX Toolset v3.11\bin\WixNetFxExtension.dll 的引用和 C:\Program Files (x86)\WiX Toolset v3.11\bin\WixUIExtension.dll (Product.wxs 文件的元素需要这些来构建安装程序)。
  • 配置 VS 以构建安装程序:在 VS 中,单击构建 -> 配置管理器。在配置管理器对话框中,选中 Build FooAddInSetup 的复选框。
  • 已创建 EULA.rtf (我的说“这是免许可软件”)并将其放置在 C:....\Visual Studio 2017\Projects\FooAddIn\FooAddInSetup
  • 为我的 VSTO 位置的路径创建了一个预处理器变量发布文件:在解决方案资源管理器中,鼠标右键单击 FooAddInSetup -> Properties .在 FooAddInSetup 选项卡上,单击“构建”。在 General部分,点击 Define 'Debug' preprocessor variable .在 Define preprocessor variables:文本框,输入 AddinFiles=..\FooAddIn\bin\$(Configuration)\
  • 填充样板 WiX Product.wxs我的文件 add-in如下图 Product.wxs 文件
  • 注:在wxs文件,我修改了 Visual Studio 2010 Tools for Office Runtime Condition 中的超链接element - Pieter 示例中的元素已死。
  • 我将解决方案配置设置为 Release并构建了解决方案。
  • 已复制 FooAddInSetup.msi来自 ...\FooAddInSetup\bin\release在我的开发机器上到我的生产机器(VDI master)并以管理员身份运行安装程序。

  • 结果
  • 不考虑我在 wxs 中声明的注册表设置文件,我的注册表项是在 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\Word\AddIns\LesCaveatAddIn 中创建的,即他们按预期进入了 HKLM,但他们进入了 \Software\Wow6432Node\Microsoft.....而不是 \Software\Microsoft....正如我在 wxs 中编码的那样文件。我认为这是因为我的生产机器是 64 位机器。
  • 正如预期的那样,加载项本身安装在 c:\program files (x86)
  • 启动 Word,加载项按预期加载

  • Product.wxs 文件
    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

    <!--
    The boilerplate Product.wxs file already contains the minimum amount of elements needed to build a WiX installer.
    If the Product element, Id attribute is set to an asterisk (*), WiX will generate a new GUID every time the setup project is compiled (I left it as-is).
    Change the Name attribute value and Manufacturer attribute value to values of your choice.
    -->
    <Product Id="*"
    Name="FOO Add-In"
    Language="1033"
    Version="1.0.0.0"
    Manufacturer="Foo Masters"
    UpgradeCode="4b35cc09-4780-4644-a7d4-f5901f7a7e45">

    <!--Attributes shown are the minimum number needed to build the setup project.-->
    <Package InstallerVersion="200"
    Compressed="yes"
    InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

    <!-- Verify if VSTO Office Runtime is installed -->
    <Property Id="VSTORUNTIMEREDIST">
    <RegistrySearch
    Id="VSTORuntimeRedist"
    Root="HKLM"
    Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R"
    Name="Version"
    Type="raw" />
    </Property>

    <Condition
    Message="The Visual Studio 2010 Tools for Office Runtime is not installed.
    Please download and install from https://www.microsoft.com/en-us/download/details.aspx?id=48217.">
    <![CDATA[Installed OR VSTORUNTIMEREDIST>="10.0.30319"]]>
    </Condition>

    <!-- Verify if .NET Framework is installed -->
    <PropertyRef Id="NETFRAMEWORK40FULL"/>
    <Condition Message="This application requires .NET Framework 4.0.">
    <![CDATA[Installed OR NETFRAMEWORK40FULL]]>
    </Condition>

    <!--I want one Cab file, so only one Media element is needed. Make sure the EmbedCab attribute value is "yes".-->
    <Media Id="1" Cabinet="FooAddin.cab" EmbedCab="yes"/>

    <!--Set values for display on setup progeam UI-->
    <Feature Id="ProductFeature" Title="FOO Add-In" Level="1">
    <ComponentGroupRef Id="ProductComponents" />
    <ComponentRef Id="Registry_FriendlyName" />
    <ComponentRef Id="Registry_Description" />
    <ComponentRef Id="Registry_Manifest" />
    <ComponentRef Id="Registry_LoadBehavior" />
    </Feature>

    <!--Specify that the WiXUI_Minimal UI should be used, i.e, the simplest UI available -->
    <UIRef Id="WixUI_Minimal" />

    <!--Specify the EULA file to use-->
    <WixVariable Id="WixUILicenseRtf" Value="EULA.rtf" />

    </Product>

    <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="FooAddin" />

    <!-- Add required VSTO registry entries for 32-bit Word -->
    <!-- see https://docs.microsoft.com/en-us/visualstudio/vsto/registry-entries-for-vsto-add-ins?view=vs-2019-->

    <Component Id="Registry_FriendlyName">
    <RegistryValue Id="RegKey_FriendlyName" Root="HKLM"
    Key="Software\Microsoft\Office\Word\AddIns\FooAddin"
    Name="FriendlyName"
    Value="FOO Add-In"
    Type="string" KeyPath="yes" />
    </Component>
    <Component Id="Registry_Description">
    <RegistryValue Id="RegKey_Description" Root="HKLM"
    Key="Software\Microsoft\Office\Word\AddIns\FooAddin"
    Name="Description"
    Value="FOO Add-In"
    Type="string" KeyPath="yes" />
    </Component>
    <Component Id="Registry_Manifest">
    <RegistryValue Id="RegKey_Manifest" Root="HKLM"
    Key="Software\Microsoft\Office\Word\AddIns\FooAddin"
    Name="Manifest" Value="[INSTALLFOLDER]FooAddin.vsto|vstolocal"
    Type="string" KeyPath="yes" />
    </Component>
    <Component Id="Registry_LoadBehavior">
    <RegistryValue Id="RegKey_LoadBehavior" Root="HKLM"
    Key="Software\Microsoft\Office\Word\AddIns\FooAddin"
    Name="LoadBehavior" Value="3"
    Type="integer" KeyPath="yes" />
    </Component>

    </Directory>
    </Directory>
    </Fragment>

    <Fragment>

    <!-- Add refs to the components of the VSTO-->

    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">

    <Component Id="MSOfficeToolsCommon_dll_Component">
    <File Id="MSOfficeToolsCommon_dll" KeyPath="yes"
    Name="Microsoft.Office.Tools.Common.v4.0.Utilities.dll"
    Source="$(var.AddinFiles)"></File>
    </Component>

    <Component Id="FooAddin_dll_Component" >
    <File Id="FooAddin_dll" KeyPath="yes"
    Name="FooAddin.dll"
    Source="$(var.AddinFiles)" />
    </Component>

    <Component Id="FooAddin_vsto_Component">
    <File Id="FooAddin_vsto" KeyPath="yes"
    Name="FooAddin.vsto"
    Source="$(var.AddinFiles)"></File>
    </Component>

    <Component Id="FooAddin_dll_manifest_Component">
    <File Id="FooAddin_dll_manifest" KeyPath="yes"
    Name="FooAddin.dll.manifest"
    Source="$(var.AddinFiles)"></File>
    </Component>

    </ComponentGroup>
    </Fragment>
    </Wix>

    关于ms-word - 如何使用 WIX 打包 VSTO Word 插件以进行部署(到 Office 32 位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55815546/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com