Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将QBFC13_0.msm添加到Clickonce_C#_Clickonce_Qbfc - Fatal编程技术网

C# 如何将QBFC13_0.msm添加到Clickonce

C# 如何将QBFC13_0.msm添加到Clickonce,c#,clickonce,qbfc,C#,Clickonce,Qbfc,在网上似乎没有关于如何做到这一点的分步过程记录在案。如果有人提到它,它的文档记录非常糟糕,我无法遵循他们建议的复杂路径。 我是ClickOnce的新手,我已经能够在用户机器上正确安装我的c程序,但是当然我没有注册22E88GD7-FB0B-B905-CCA6BD526B52类,这意味着我相信QBFC13没有安装在用户机器上。我的客户不希望在ClickOnce之外使用标准QB安装程序单独一次性安装QBFC,他希望将其作为ClickOnce的一部分。它真的那么复杂,文件记录也很差吗?我所看到的所有谷

在网上似乎没有关于如何做到这一点的分步过程记录在案。如果有人提到它,它的文档记录非常糟糕,我无法遵循他们建议的复杂路径。
我是ClickOnce的新手,我已经能够在用户机器上正确安装我的c程序,但是当然我没有注册22E88GD7-FB0B-B905-CCA6BD526B52类,这意味着我相信QBFC13没有安装在用户机器上。我的客户不希望在ClickOnce之外使用标准QB安装程序单独一次性安装QBFC,他希望将其作为ClickOnce的一部分。它真的那么复杂,文件记录也很差吗?我所看到的所有谷歌搜索和stackoverflow条目都没有给出一个简单或完全的方法,让新手可以做到。救命啊

ClickOnce安装在当前用户的上下文中进行。如果当前用户不是管理员,则无法在环境中安装任何需要注册的内容。所以你所问的可能不是直接可能的

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


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

在ClickOnce部署中,我们可以添加先决条件。在这种情况下,如果您添加QBFC.exe包,那么它将自动从部署服务器安装到客户端计算机中。 要将QBFC作为先决条件添加,它应该添加到C:\ProgramFilesx86\Microsoft SDK\Windows\v8.0A\Bootstrapper\Packages中 在部署服务器中。 有一种XML用于命名对流。 但是,简单的方法是使用

引导程序清单生成器软件


谢谢。

在VS2012中,您需要添加一个先决条件项目属性->发布->先决条件

但是,默认情况下,QBFC不在列表中,因此需要使用Microsoft的Bootstrapper清单生成器来创建您自己的清单。不幸的是,这是错误和混乱。下面是您的做法:

新建项目-选择包清单 项目名称-此清单项目的“保存”名称位于此处 在树中,alt单击Package,然后添加安装文件-浏览到.msi或.exe

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

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

Result属性-步骤3中要测试的文件属性

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

ex: AppDataFolder
ex: \Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
路径-将其与步骤6.2匹配

ex: AppDataFolder
ex: \Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
安装条件选项卡 类型-旁路IF 属性-从步骤6.1中选择标识符 比较-存在 价值-不适用 退出代码选项卡 退出代码-0 结果-成功 保存您的工作,然后构建CTRL+SHIFT+B “生成结果”对话框-单击“生成输出”链接 将整个文件夹移动/复制到:

[VS2012] C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\
重新启动Visual Studio,您的新先决条件将出现在列表中! 现在,只需在项目属性->发布->先决条件下选择它。。。出版 以下是我为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>

谢谢您的回答,但问题是让发布过程将.msm文件插入到必备文件中。目前,有关该主题的所有Microsoft文档都是错误的、不起作用的或没有正确的文档。实际安装第一次点击安装程序或启动程序后,按照您的意见安装没有问题。我卡在同一个地方添加QBFC,你找到解决方案了吗请帮助!