我编写了一个 .Net Windows Forms 应用程序,它使用通用应用程序数据文件夹来存储日志文件和用户帐户。该应用程序使用安装屏蔽项目分发,并在所有不同的 Windows 版本上完美运行。
来自不同文件的部分代码如下所示
// Defining the path to use (in ProductInfo class)
public static string CommonApplicationDataPath
{
get
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
path = StringHelper.EnsureEndsWithSlash(path);
path += Vendor + @"\" + ProductName + @"\";
return path;
}
}
// Configuring the logger and user manager instances at startup
Logger.Configure(string.Empty, ProductInfo.Password, ProductInfo.CommonApplicationDataPath);
UserManager.Configure(User.Empty, ProductInfo.Password, ProductInfo.CommonApplicationDataPath,
ProductInfo.UserLimitCount);
// Example method for saving the users to file (in UserManager class)
public bool SaveUsers(AppUsers appUsers)
{
AppUsersSerializer serializer = new AppUsersSerializer(_password, _fileName);
if (serializer.Serialize(appUsers) == true)
{
return true;
}
else
{
Logger.Instance.Log(Logs.ErrorB.UserSave, _fileName);
return false;
}
}
我现在想通过 Windows 应用商店发布应用程序并使用了 MSIX 打包工具。为了对包进行签名,我创建了一个自签名证书并将其添加到受信任的根证书颁发机构。.msix 包安装在与我的旧桌面版本应用程序相同的 PC 上。
我遇到的问题是应用程序无法写入文件CommonApplicationData
夹中的文件。应用程序可以读取和加载数据,但不能更新和写入对文件的更改。因此,文件的路径是正确的,但似乎缺少一些写权限。我在包上尝试了不同的功能,甚至勾选了所有功能,但没有任何效果。
我还浏览了该C:\Program Files\WindowsApps\<my app package>\
文件夹并检查了应用程序的结构并找到了文件。它们在那里,但仅对应用程序可读。在旧桌面 Windows 窗体版本中应添加文件时,删除文件不会创建新文件。
该应用程序非常大,包含许多在 Windows 应用商店应用程序上下文中运行良好的功能。唯一缺少的是上面提到的文件写入问题。
任何建议将不胜感激。