Windows phone 7 管理我的应用程序的免费版本

Windows phone 7 管理我的应用程序的免费版本,windows-phone-7,marketplace,Windows Phone 7,Marketplace,我的付费应用程序已在WP7市场上发布。现在我想创建一个免费版本的应用程序 我想我会有一个常数IsFreeVersion=true然后基于此禁用某些功能 为这个项目设置项目的最佳方法是什么?我绝对不想有两个版本的代码。那么我应该创建一个新项目并链接文件吗 另外,如何处理不同的应用程序图标?最后,我的应用程序Id不需要单独的GUID吗?设计用于处理这种情况。您可以检查IsTrial是否为真,在这种情况下,您可以将所有功能限制在一个代码库中。我认为您避免使用此选项是为了确保您的应用程序出现在市场的免费

我的付费应用程序已在WP7市场上发布。现在我想创建一个免费版本的应用程序

我想我会有一个常数
IsFreeVersion=true然后基于此禁用某些功能

为这个项目设置项目的最佳方法是什么?我绝对不想有两个版本的代码。那么我应该创建一个新项目并链接文件吗

另外,如何处理不同的应用程序图标?最后,我的应用程序Id不需要单独的GUID吗?

设计用于处理这种情况。您可以检查
IsTrial
是否为真,在这种情况下,您可以将所有功能限制在一个代码库中。我认为您避免使用此选项是为了确保您的应用程序出现在市场的
免费部分。在这种情况下,您必须将其作为新的应用程序提交,这意味着一个新的GUID


好吧(也许有人有另一种方法),你必须创建一个新项目并运行一个单独的构建。您可以在大多数情况下包含现有的代码库,但如果不包含
试用API
,则最终会得到两个版本。由于这是一个新项目,您可以将平铺图标更改为您想要的任何内容

Jeff Brand还准备了一个非常好的TrialManager库,允许您实施不同类型的试验管理

例如:

  • N次使用后过期
  • 使用T分钟后过期

如果你想要免费和付费版本的单独应用程序(可能你限制了免费应用程序的功能或添加了广告),那么我会创建一个单独的项目,然后链接到另一个的现有文件(使用“添加为链接”)

然后,您可以根据需要自定义不同的版本。在这样做时,我喜欢使用分部方法(和类)来扩展和自定义不同的版本。

您可能还希望使用特定于应用程序的编译器指令将功能限制为特定版本。

如果您希望在同一项目中使用免费和付费版本的应用程序,而不使用“试用”版本,我就是这样做的:

每个项目都分配了一个ProductID,在安装时将该应用程序与其他应用程序区分开来。您可以创建第二个项目并链接到第一个项目中的所有文件,但随着项目的增长,这将需要维护。我的解决方案允许使用构建配置选择要构建的免费或付费应用程序

首先,每个版本的应用程序都需要一个单独的ProductID。此ProductID在清单文件“Properties/WMAAppManifest.xml”中声明。因此,第一步是创建两个版本的WMAAppManifest.xml。我称它们为WMAAppManifestPaid.xml和WMAAppManifestFree.xml

在每个清单文件中,为ProductID提供一个单独的GUID,并更改免费版本的标题,以便在安装时可以区分它们

接下来,我们需要在项目中添加两个新的构建配置。我称之为ReleaseFree和DebugFree

接下来,向所有生成配置添加一些预生成事件,以复制适当的清单文件:

如果$(ConfigurationName)=发布副本$(ProjectDir)\Properties\WMAppManifestPaid.xml$(ProjectDir)\Properties\WMAppManifest.xml 如果$(ConfigurationName)=调试副本$(ProjectDir)\Properties\WMAppManifestPaid.xml$(ProjectDir)\Properties\WMAppManifest.xml 如果$(ConfigurationName)==ReleaseFree copy$(ProjectDir)\Properties\WMAppManifestFree.xml$(ProjectDir)\Properties\WMAppManifest.xml 如果$(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

FWIW,编译器指令将是最简单的。您只需在项目设置(自由版本)中定义一个ISFREEVERSION指令,然后只需添加#else ISFREEVERSION#否则#endif(效果很好!)谢谢你,马特!这种方法允许我拥有项目的唯一GUID、应用程序的新图标,而不必复制我的代码@这只在一定程度上是好的。它不会帮助您获得不同的项目属性、图像等。但对我来说,我可能会遇到90%的问题。。(无论如何,如果不清楚我是在告诉安迪,在我看来,你的解决方案是正确的)。。能够分享代码真的很方便…完美-正是我所需要的。链接文件对我来说是维护的噩梦。我意识到这很旧,但project linker非常好,非常感谢,为我节省了很多维护两个代码库的麻烦!!:)我注意到一件事。我不得不在
“$(ProjectDir)Properties\WMAppManifestPaid.xml”
和所有其他路径周围加上引号,因为其中可能有空格。我还删除了“/”btw
$(ProjectDir)
属性