【问题标题】:How to add QBFC13_0.msm to Clickonce如何将 QBFC13_0.msm 添加到 Clickonce
【发布时间】:2014-07-01 13:06:29
【问题描述】:

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

【问题讨论】:

    标签: c# clickonce qbfc


    【解决方案1】:

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

    引导程序清单生成器软件。

    谢谢。

    【讨论】:

      【解决方案2】:

      在VS2012中,需要添加一个Prerequisites(Project Properties --> Publish --> Prerequisites...)。

      但是,QBFC 默认不在列表中,因此需要 Microsoft 的 Bootstrapper Manifest Generator 来创建您自己的。不幸的是,它是错误的和令人困惑的。所以这是你的做法:

      1. 新建项目 - 选择“包清单”
      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. 值 - 不适用
      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. 现在,只需在 Project Properties --> Publish --> Prerequisites... 下选择它并发布

      这是我为 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>
      

      【讨论】:

        【解决方案3】:

        ClickOnce 安装发生在当前用户的上下文中。如果当前用户不是管理员,他不能在环境中安装任何需要注册的东西。所以你问的可能是不可能直接的。

        可以尝试做的是安装一个小帮助应用程序以及您的应用程序,该应用程序能够注册您的组件/执行安装程序,并让您的 ClickOnce 应用程序在可能的情况下以管理员权限执行。但是,这只有在用户真正拥有机器上的管理员权限时才有效。

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

        【讨论】:

        • 感谢您的回答,但问题是让“发布”过程将 .msm 文件插入到先决条件中。目前有关该主题的所有 Microsoft 文档都是错误的、不起作用或没有正确记录。根据您的评论,实际安装(第一次单击设置或之后启动程序)安装没有问题。
        • 我卡在同一个地方添加QBFC,你找到解决方案了吗,请帮忙!
        猜你喜欢
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 1970-01-01
        相关资源
        最近更新 更多