【问题标题】:Use different AppData folders for Debug and Release builds of an application为应用程序的调试和发布版本使用不同的 AppData 文件夹
【发布时间】:2016-12-07 23:29:24
【问题描述】:

如果我有一个名为MyApplication 的应用程序,是否可以为该应用程序的本地AppData 目录提供自定义位置?例如:C:\Users\User1\AppData\Local\MyApplication2。我在任何地方都找不到如何更改它。

编辑

澄清:我不想创建一个名为C:\Users\User1\AppData\Local\MyApplication2 的辅助目录。我希望系统将C:\Users\User1\AppData\Local\MyApplication2 识别为MyApplication 的实际本地AppData 目录。

编辑 2:

我真的需要一种方法来在我的计算机上安装调试和发布版本,以便尽可能接近现实。到目前为止,我设法更改了应用程序的安装位置和其他应用程序级别标识符,但我无法更改 AppData 以便它们每个人都使用不同的设置文件。

【问题讨论】:

  • 出于好奇,您希望这能实现什么?这是一个系统范围的设置,所以你要做的就是让它使用 %LOCALAPPDATA% 的任何其他应用程序(或操作系统本身)最终会在你的应用程序文件夹下创建它的文件夹。
  • 我真的需要一种方法来在我的计算机上安装调试和发布版本,以便尽可能接近现实。到目前为止,我设法更改了应用程序的安装位置和其他应用程序级别标识符,但我无法更改 AppData 以便它们每个人都使用不同的设置文件。
  • 那么为什么需要更改 LOCALAPPDATA 的整个操作系统位置?创建两个文件夹(%LOCALAPPDATA%\MyApp\Debug 和 %LOCALAPPDATA%\MyApp\Release)和一个编译器定义或命令行开关或任何基于它是调试还是发布以使用适当的文件夹。例如,#IFDEF 调试。
  • 嗯,我从来没有想过这个问题。您可以将此添加为答案以便我接受吗?实际上,我将保留发布版本(因为用户已经安装了该应用程序),并且我将创建一个 %LOCALAPPDATA%\MyApp\Debug 就像你说的那样,仅用于我的 PC 上的调试版本。
  • 我可以这样做,如果您可以编辑您的问题以放置您之前评论的内容(以 I really need a way 开头的评论),以便在我可以回答的问题。 :-)

标签: appdata


【解决方案1】:

如果您只是想在机器上开发代码时更改位置,则无需移动{localappdata} 的位置。事实上,根本没有必要让 Inno Setup 参与其中。

只需根据编译器定义的值在代码中定义一个局部变量(例如#IFDEF DEBUG)。在安装过程中创建 %LOCALAPPDATA%\MyApplication2 文件夹。定义 DEBUG 后,在运行时(将在开发期间)附加到该位置以从 Debug 文件夹读取/写入配置信息。

我不知道你在用什么语言编写代码,但在 Delphi 中它会是这样的:

{$IFDEF DEBUG}
const
  ConfigDir = 'Debug\';
{$ENDIF}

// At application startup, retrieve the contents of %LOCALAPPDATA% via API call
// or by retrieving the contents of the environmental variable (say into the
// DataDir variable). Then...
{$IFDEF DEBUG}
DataDir := DataDir + ConfigDir;
// If needed, you can check here for whether the folder exists and
// create it if it doesn't.
{$ENDIF}

现在您所有访问配置信息的代码都只是从DataDir 检索它,这将根据您是处于调试模式还是发布模式进行调整。

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    相关资源
    最近更新 更多