如何将QBFC13_0.msm添加到Clickonce

时间:2014-07-01 13:06:29

标签: c# clickonce qbfc

在网络上的任何地方似乎都没有逐步记录如何执行此操作的步骤。如果提到它,它的记录很差,我不能按照他们建议的复杂路径。 我是ClickOnce的新手,我已经能够让我的c#程序在用户机器上正确安装,但我当然得到“22E88GD7-FB0B-B905-CCA6BD526B52”“未登记的类”,这意味着我相信用户计算机上未安装QBFC13。我的客户不希望在ClickOnce之外使用标准QB安装程序单独一次安装QBFC,他希望将其作为ClickOnce的一部分。它真的那么复杂,而且记录不完整的流程吗?我见过的所有google搜索和stackoverflow条目都没有办法轻松或完全地做到这一点,以便新手可以做到这一点。救命啊!

3 个答案:

答案 0 :(得分:1)

在clickOnce部署中,我们可以添加先决条件。在这种情况下,如果您添加QBFC.exe程序包,它将自动从部署服务器安装到客户端计算机。 要将QBFC添加为先决条件,应添加C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages 在部署服务器中。 有一个用于命名融合的XML。 但是,简单的方法是使用

  

Bootstrapper Manifest Generator软件。

感谢。

答案 1 :(得分:1)

在VS2012中,您需要添加先决条件(项目属性 - >发布 - >先决条件......)。

但是,默认情况下QBFC不在列表中,因此需要 Microsoft的Bootstrapper Manifest Generator 来创建自己的。不幸的是,这是错误和混乱。所以这是你做的:

  1. 新项目 - 选择“Package Manifest”
  2. 项目名称 - “此清单项目的'保存'名称在此处”
  3. 在树中,按住Alt键并单击“打包”,然后单击“添加安装文件” - 浏览到.msi或.exe

    ex: C:\Users\{username}\AppData\Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}\QBFC 11.0.msi
    
  4. 显示名称 - “将在Visual Studio中显示的名称”

    ex: QuickBooks Foundation Classes v11.0
    
  5. “属性”标签 - 不需要,请跳过
  6. 系统检查 - 单击第一个图标“文件检查”

    1. 结果的属性 - 您要测试的步骤#3的文件属性

      ex: Name
      
    2. 要搜索的文件名 - 选择与步骤3中相同的文件
    3. 在特殊文件夹中开始搜索 - 将其与步骤#6.2相匹配

      ex: AppDataFolder
      
    4. 路径 - 将此与步骤#6.2相匹配

      ex: \Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
      
  7. 安装条件标签
    1. 类型 - ByPassIf
    2. 属性 - 从步骤#6.1
    3. 中选择标识符
    4. 比较 - 存在
    5. 价值 - 不适用
  8. 退出代码标签
    1. 退出代码 - 0
    2. 结果 - 成功
  9. 保存您的工作,然后“构建”(CTRL + SHIFT + B)
  10. 构建结果对话框 - 单击“构建输出”链接
  11. 将整个文件夹移动/复制到:

    [VS2012] C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\
    
  12. 重新启动Visual Studio,您的新先决条件将在列表中!
  13. 现在,只需在项目属性下选择它 - >发布 - >先决条件......和发布
  14. 这是我为QBFCv11生成的工作“product.xml”:

    <?xml version="1.0" encoding="utf-8"?>
    <Product ProductCode="Intuit.QBFCv11" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
      <PackageFiles CopyAllPackageFiles="false">
        <PackageFile Name="qbfc 11.0.msi" PublicKey="3082...0001" />
      </PackageFiles>
      <InstallChecks>
        <FileCheck Property="Name" SpecialFolder="ProgramFilesFolder" SearchPath="Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}" FileName="QBFC 11.0.msi" />
      </InstallChecks>
      <Commands Reboot="Defer">
        <Command PackageFile="qbfc 11.0.msi">
          <InstallConditions>
            <BypassIf Property="Name" Compare="ValueExists" Value="N/A for ValueExists and ValueNotExists" />
          </InstallConditions>
          <ExitCodes>
            <ExitCode Value="0" Result="Success" />
            <DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
          </ExitCodes>
        </Command>
      </Commands>
    </Product>
    

答案 2 :(得分:0)

ClickOnce安装发生在当前用户的上下文中。如果当前用户不是管理员,则他无法安装需要在环境中注册的任何内容。因此,您可能无法直接询问。

可以尝试做的是安装一个小帮助应用程序以及您的应用程序,该应用程序能够注册您的组件/执行安装程序,并让ClickOnce应用程序执行具有管理员权限的应用程序(如果可能)。但是,只有当用户确实拥有该机器的管理员权限时,这才有效。

即使您在ClickOnce安装之前安装了先决条件,管理员也必须在计算机上的任何用户之前执行该先决条件。