编辑:经过更多搜索,我找到了完成此操作的方法。 我用This preview page来改变我的Product.xml 然后我复制了一些现有的Product.xml来检查它是否已经安装。
所以我在我的系统和C#应用程序中成功实现了Sync Framework 2.1。但是,当我发布它并在未安装Sync Framework的另一台PC上进行测试时,会出现错误 所以我尝试在安装时包含SyncSDK-v2.1-x86-ENU.msi。
搜索后我发现我需要将它添加到先决条件列表中(项目 - >属性 - >发布 - >先决条件)
我尝试过关于此Creating Custom Packages的链接。但它仍然指向不再存在的BMG(Bootstrapper Manifest Generator)文件。
下一个解决方案是手动创建它,我想我是在正确的道路上但是无法完成它。我做了什么:
但是我仍然无法将Sync Framework 2.1纳入先决条件选择框。
这是我的(可能是垃圾)Product.xml: 编辑:现在是修复我的问题的Product.xml:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Microsoft.Sample.EULA">
<!-- Defines the list of files to be copied on build. -->
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="SyncSDK-v2.1-x86-ENU.msi"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck Product="IsMsiInstalled"
Property="{{4A3EAF2F-F950-4BF2-B0C7-857E0E970E5A}}"/>
</InstallChecks>
<!-- Defines how to run the Setup package.-->
<Commands >
<Command PackageFile = "SyncSDK-v2.1-x86-ENU.msi" Arguments=''>
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<FailIf Property="AdminUser"
Compare="ValueNotEqualTo" Value="True"
String="NotAnAdmin"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success" />
<ExitCode Value="-1" Result="Fail" String="AU_Unaccepted" />
<DefaultExitCode Result="Fail"
FormatMessageFromSystem="true" String="GeneralFailure" />
</ExitCodes>
</Command>
</Commands>
我用How to create Product Manifest来制作这个......
这是我的Package.xml
<?xml version="1.0" encoding="utf-8" ?>
<Package
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
Name="DisplayName"
Culture="Culture"
LicenseAgreement="Eula.rtf">
<PackageFiles>
<PackageFile Name="Eula.rtf"/>
</PackageFiles>
<Strings>
<String Name="DisplayName">Sync Framework 2.1</String>
<String Name="Culture">en</String>
<String Name="NotAnAdmin">You must be an administrator to install this package. </String>
<String Name="GeneralFailure">
A general error has occurred while
installing this package.
</String>
</Strings>
</Package>
一个小问题,但目前根本没有问题,我也使用SQL数据库,本地包含在项目和在线数据库中,我是否需要在先决条件选择框中选择更多先决条件。喜欢SQL server express 2012 localDB? 修改:是
这样可行,但我仍然想创建一个product.xml,以便自动从网站下载而不是将其放在安装文件夹中。它使安装文件夹对于小应用程序来说很大。
答案 0 :(得分:2)
最后,我基于bootstrappers for sync framework 2.0
完成了引导程序这里分别是包和产品xml:
SyncFX20Core的产品文件夹(x64)
<?xml version="1.0" encoding="UTF-8"?>
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="SyncFX20Core(x64)"/>
SyncFX20Core(x64)的package.xml
<?xml version="1.0" encoding="utf-8"?>
<Package Name="DisplayName" LicenseAgreement="synchronizationeula_english.rtf" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="synchronizationeula_english.rtf" />
<PackageFile Name="Synchronization-v2.1-x64-ENU.msi" HomeSite="SyncFX21_64" PublicKey="3082010A0282010100BD72B489E71C9F85C774B8605C03363D9CFD997A9A294622B0A78753EDEE463AC75B050B57A8B7CA05CCD34C77477085B3E5CBDF67E7A3FD742793679FD78A034430C6F7C9BAC93A1D0856444F17080DF9B41968AA241CFB055785E9C54E072137A7EBCE2C2FB642CD2105A7D6E6D32857C71B7ACE293607CD9E55CCBBF122EBA823A40D29C2FBD0C35A3E633DC72C490B7B7985F088EF71BD435AE3A3B30DF355FB25E0E220D3E79A5E94A5332D287F571B556A0C3244EF666C6FF0389CEF02AD9AA1DD9807100E3C1869E2794E4614E0B98CD0756D9CAC009C2D42F551B85AF4784583E92E7C2BBB5DCD196128AD94430AC56A42FFB532AEA42922DE16E8D30203010001" />
</PackageFiles>
<Commands Reboot="Defer">
<Command PackageFile="Synchronization-v2.1-x64-ENU.msi" Arguments="/quiet" EstimatedInstallSeconds="80" EstimatedTempBytes="20000000">
<ExitCodes>
<ExitCode Value="0" Result="Success" />
<ExitCode Value="112" Result="Fail" String="DiskFull" />
<DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>
<Strings>
<String Name="Culture">en</String>
<String Name="DisplayName">SyncFX21Core (x64)</String>
<String Name="SyncFX21_64">http://download.microsoft.com/download/E/1/E/E1E636E6-AA5C-4052-9927-D722312DB564/Synchronization-v2.1-x64-ENU.msi</String>
<String Name="DiskFull">DiskFull</String>
<String Name="Anunexpectedexitcodewasr">An unexpected exit code was returned from the installer. The installation failed.</String>
</Strings>
</Package>
SyncFX20DatabaseProviders的产品文件夹(x64)
<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="SyncFX20DatabaseProviders(x64)" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<RelatedProducts>
<DependsOnProduct Code="SyncFX20Core(x64)" />
</RelatedProducts>
</Product>
用于SyncFX20DatabaseProviders(x64)的包
<?xml version="1.0" encoding="utf-8"?>
<Package Name="DisplayName" LicenseAgreement="databaseproviderseula_english.rtf" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper">
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="databaseproviderseula_english.rtf" />
<PackageFile Name="DatabaseProviders-v3.1-x64-ENU.msi" HomeSite="SyncFX21DatabaseProviders_64" PublicKey="3082010A0282010100BD72B489E71C9F85C774B8605C03363D9CFD997A9A294622B0A78753EDEE463AC75B050B57A8B7CA05CCD34C77477085B3E5CBDF67E7A3FD742793679FD78A034430C6F7C9BAC93A1D0856444F17080DF9B41968AA241CFB055785E9C54E072137A7EBCE2C2FB642CD2105A7D6E6D32857C71B7ACE293607CD9E55CCBBF122EBA823A40D29C2FBD0C35A3E633DC72C490B7B7985F088EF71BD435AE3A3B30DF355FB25E0E220D3E79A5E94A5332D287F571B556A0C3244EF666C6FF0389CEF02AD9AA1DD9807100E3C1869E2794E4614E0B98CD0756D9CAC009C2D42F551B85AF4784583E92E7C2BBB5DCD196128AD94430AC56A42FFB532AEA42922DE16E8D30203010001" />
</PackageFiles>
<Commands Reboot="Defer">
<Command PackageFile="DatabaseProviders-v3.1-x64-ENU.msi" Arguments="/quiet" EstimatedInstallSeconds="80" EstimatedTempBytes="20000000">
<ExitCodes>
<ExitCode Value="0" Result="Success" />
<ExitCode Value="112" Result="Fail" String="DiskFull" />
<DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>
<Strings>
<String Name="Culture">en</String>
<String Name="DisplayName">SyncFX21DatabaseProviders (x64)</String>
<String Name="SyncFX21DatabaseProviders_64">http://download.microsoft.com/download/E/1/E/E1E636E6-AA5C-4052-9927-D722312DB564/DatabaseProviders-v3.1-x64-ENU.msi</String>
<String Name="DiskFull">DiskFull</String>
<String Name="Anunexpectedexitcodewasr">An unexpected exit code was returned from the installer. The installation failed.</String>
</Strings>
</Package>
如果您需要更多详细信息或源文件,请随时与我联系... ameser@gmail.com
干杯!
答案 1 :(得分:0)
xml for x86 version with Installed check:
<?xml version="1.0" encoding="UTF-8"?>
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="SyncFX21Core (x86)" >
<PackageFiles CopyAllPackageFiles="false">
<PackageFile Name="synchronization-v2.1-x86-enu.msi" PublicKey="3082010A0282010100BD3089FB4572A8536B9E894F0023C0BED41D3DB1594038F373918226E696120053D91C820E3CCE1DBBBDF7428D97D4FC381AE4B9F9E3ECD36103BFA0D3D6754D5C46A9ED5EF0D2E2695B1A73EAB31C8D04CD2944A064592F1E985D6EC7AB18398265C4A7BCAB758819EA87971426B37F2676A4D4383984E3B326D518F92BE9D2C9165A5421F2978D878629FEF4492CE68BF8043F7DCDCD9692860D7103E2D0FE0C4235FFD7B83FDD8E450A7DF6D74BAD5BF076721D77237D8935C41C5DB250034B476D07A75588980680A681AD544ED881D6FABF42C031BE550D99D553491230EBE5A5887C5EC47A5A148708B43769A0EB32248C08EBF9D414BAE0FCCDEAA4150203010001" />
</PackageFiles>
<InstallChecks>
<RegistryCheck Property="Installed" Key="HKLM\SOFTWARE\Microsoft\Microsoft Sync Framework\v2.1\Setup\SynchronizationX86" Value="Install"/>
</InstallChecks>
<Commands>
<Command PackageFile="synchronization-v2.1-x86-enu.msi" Arguments="/quiet" EstimatedInstallSeconds="80" EstimatedTempBytes="20000000">
<InstallConditions>
<BypassIf Property="Installed" Compare="ValueEqualTo" Value="1" />
<FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired" />
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success" />
<ExitCode Value="112" Result="Fail" String="DiskFull" />
<DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>
<Strings>
<String Name="DiskFull">DiskFull</String>
<String Name="AdminRequired">Administrator permissions are required to install Sync Framework 2.1. Contact your administrator.</String>
<String Name="Anunexpectedexitcodewasr">An unexpected exit code was returned from the installer. The installation failed.</String>
</Strings>
</Product>