我的付费应用程序已在 WP7 市场上发布。现在我想创建一个免费版本的应用程序。
我想我会有一个常数IsFreeVersion = true;
,然后基于它禁用一些功能。
为此设置我的项目的最佳方法是什么?我绝对不想有两个版本的代码。那么我应该创建一个新项目并链接文件吗?
另外,如何处理不同的应用程序图标?最后,我的应用程序 ID 不需要单独的 GUID 吗?
我的付费应用程序已在 WP7 市场上发布。现在我想创建一个免费版本的应用程序。
我想我会有一个常数IsFreeVersion = true;
,然后基于它禁用一些功能。
为此设置我的项目的最佳方法是什么?我绝对不想有两个版本的代码。那么我应该创建一个新项目并链接文件吗?
另外,如何处理不同的应用程序图标?最后,我的应用程序 ID 不需要单独的 GUID 吗?
如果您想在同一个项目中拥有免费和付费版本的应用而不使用“试用”版本,我就是这样做的:
每个项目都分配有一个 ProductID,用于在安装时将应用程序与其他应用程序区分开来。您可以创建第二个项目并链接到第一个项目中的所有文件,但这需要随着项目的增长进行维护。我的解决方案允许使用构建配置来选择要构建的免费或付费应用程序。
首先,您需要为应用程序的每个版本提供一个单独的 ProductID。此 ProductID 在清单文件“Properties/WMAAppManifest.xml”中声明。所以第一步是创建两个版本的 WMAAppManifest.xml。我称它们为 WMAAppManifestPaid.xml 和 WMAAppManifestFree.xml。
在每个清单文件中,为 ProductID 提供单独的 GUID,并更改免费版本的标题,以便在安装时区分它们。
接下来我们需要在项目中添加两个新的构建配置。我称它们为 ReleaseFree 和 DebugFree。
接下来,您将一些预构建事件添加到所有构建配置以复制适当的清单文件:
if $(ConfigurationName)==Release copy $(ProjectDir)\Properties\WMAppManifestPaid.xml $(ProjectDir)\Properties\WMAppManifest.xml if $(ConfigurationName)==Debug copy $(ProjectDir)\Properties\WMAppManifestPaid.xml $( ProjectDir)\Properties\WMAppManifest.xml if $(ConfigurationName)==ReleaseFree copy $(ProjectDir)\Properties\WMAppManifestFree.xml $(ProjectDir)\Properties\WMAppManifest.xml if $(ConfigurationName)==DebugFree copy $(ProjectDir) \Properties\WMAppManifestFree.xml $(ProjectDir)\Properties\WMAppManifest.xml
您现在应该能够通过简单地更改构建配置来构建应用程序的免费或付费版本。
接下来,为了让免费版本真正不同于付费版本,例如限制功能、显示不同的页面等,您需要在两个免费构建配置中添加一个条件编译符号,例如 FREE_VERSION。
那么您可以简单地使用编译器指令来更改代码,例如:
#if FREE_VERSION
s = "My App Free";
#else
s = "My App Paid";
#endif
如果您想要免费和付费版本的单独应用程序(大概您正在限制免费应用程序的功能或添加广告),那么我将创建一个单独的项目,然后链接到另一个项目的现有文件(使用“添加为关联”)。
然后,您可以根据需要自定义不同的版本。在做这样的事情时,我喜欢使用部分方法(和类)来扩展和定制不同的版本。
您可能还希望使用特定于应用程序的编译器指令将功能限制为特定版本。
试用 API旨在处理这种情况。您可以检查是否IsTrial
为真,在这种情况下,您可以在一个代码库中限制所有功能。我假设您避免这样做是为了确保您的应用程序出现在Free
Marketplace 的部分中。在这种情况下,您必须将其作为新应用程序提交,这意味着新的 GUID。
AFAIK(也许有人有另一种方法),您必须创建一个新项目并运行单独的构建。您可以在大多数情况下包含现有的代码库,但如果您不包含Trial API
. 由于这是一个新项目,您可以将磁贴图标更改为您想要的任何内容。
Jeff Brand 还准备了一个非常好的 TrialManager 库,它允许您实现不同类型的试验管理。
像这样的场景:
http://www.slickthought.net/post/2010/08/30/Managing-Trial-Applications-for-Windows-Phone-7.aspx