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

And*_*NET 10 marketplace windows-phone-7

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

我想我会有一个常数IsFreeVersion = true;,然后基于该禁用一些功能.

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

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

Jon*_*Jon 17

如果您想在同一个项目中使用免费和付费版本的应用而不使用"试用"版本,我就是这样做的:

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

首先,您需要为每个版本的应用程序提供单独的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
Run Code Online (Sandbox Code Playgroud)


Mat*_*cey 5

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

然后,您可以根据需要自定义不同的版本.在做这样的事情时,我喜欢使用部分方法(和类)来扩展和自定义不同的版本.
您可能还希望使用特定于应用程序的编译器指令来限制特定版本的功能.