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