在网络上的任何地方似乎都没有逐步记录如何执行此操作的步骤。如果提到它,它的记录很差,我不能按照他们建议的复杂路径。 我是ClickOnce的新手,我已经能够让我的c#程序在用户机器上正确安装,但我当然得到“22E88GD7-FB0B-B905-CCA6BD526B52”“未登记的类”,这意味着我相信用户计算机上未安装QBFC13。我的客户不希望在ClickOnce之外使用标准QB安装程序单独一次安装QBFC,他希望将其作为ClickOnce的一部分。它真的那么复杂,而且记录不完整的流程吗?我见过的所有google搜索和stackoverflow条目都没有办法轻松或完全地做到这一点,以便新手可以做到这一点。救命啊!
答案 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 来创建自己的。不幸的是,这是错误和混乱。所以这是你做的:
在树中,按住Alt键并单击“打包”,然后单击“添加安装文件” - 浏览到.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
系统检查 - 单击第一个图标“文件检查”
结果的属性 - 您要测试的步骤#3的文件属性
ex: Name
在特殊文件夹中开始搜索 - 将其与步骤#6.2相匹配
ex: AppDataFolder
路径 - 将此与步骤#6.2相匹配
ex: \Local\Downloaded Installations\{C7896CDC-45FF-49E1-A23D-68FA13A910A5}
将整个文件夹移动/复制到:
[VS2012] C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper\Packages\
这是我为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安装之前安装了先决条件,管理员也必须在计算机上的任何用户之前执行该先决条件。