【发布时间】:2019-08-01 23:52:14
【问题描述】:
我们在 Windows 应用商店中有一个 UWP 应用。通过这个应用程序,我们想在同一系统上启动各种应用程序。对于这个过程,我们需要做两件事。
- 检查系统上是否存在该应用
- 如果是,启动它。如果没有,请提供反馈
我们尝试了几件事,但我正在寻找最好的方法来做到这一点。 我们希望同时启动其他 UWP 应用和独立应用。
我尝试弄乱 Unity PlayerPrefs,但这很奇怪。如果我制作一个自定义 PlayerPref 并检查它是否存在于 1 个应用程序中,它会起作用,但是一旦我在 UWP 中制作了一个 playerpref 并在 Standalone 中检查它,我什么也得不到。当然反之亦然。 (是的,我知道 UWP 将其 playerprefs 保存在其他地方)
最好的通用解决方案是什么?继续摆弄 Playerprefs 并根据我们要打开的应用程序搜索不同的路径?(独立,UWP)或其他方式?
编辑:到目前为止我所拥有的:
if (Input.GetKeyDown(KeyCode.Backspace))
{
PlayerPrefs.SetString("42069" , "testing_this");
PlayerPrefs.Save();
Debug.Log("Wrote key 42069 to registry with: -value testing_this-");
}
if (Input.GetKeyDown(KeyCode.Space))
{
if (PlayerPrefs.HasKey("42069"))
{
Debug.Log("I found the key 42069 in my registry");
cube.SetActive(true);
}
else
{
Debug.Log("I cant find key 42069 in my registry");
}
}
if (Input.GetKeyDown(KeyCode.S))
{
const string registry_key = @"SOFTWARE\DefaultCompany";
using(RegistryKey key = Registry.CurrentUser.OpenSubKey(registry_key))
{
if (key != null)
foreach (string subKeyName in key.GetSubKeyNames())
{
if (subKeyName == "RegistryTesting")
{
Debug.Log("I found the key on path: " + registry_key);
}
}
}
}
编辑:没有人?我知道有办法。我需要做的就是检查 UWP 应用程序中是否存在独立应用程序。但我无法访问 UWP 应用程序中的寄存器。我知道有一些方法可以使用桥梁等,但我不知道如何以及从哪里开始。
【问题讨论】:
-
如果您能发布您目前拥有的代码以便我们提出建议,将会很有帮助。
-
对,我的错。我添加了它。这没什么,因为我刚刚开始测试,但我真的找不到合适的方法来做到这一点。现在,当我打开一个应用程序时,它可以工作,按退格键创建密钥,然后按空格键检查它是否存在。但是如果我用相同的代码打开一个 UWP 应用程序并按空格检查它是否存在,它就不起作用了。
-
好的,我明白你要做什么了。我不相信你可以在这样的应用程序之间共享 Playerprefs。我相信您将不得不创建自己的机制,例如写入和读取注册表(即设置注册表项 = 1,然后从另一个应用程序读取相同的注册表项),写入具有已知位置的文本文件,读/写两个应用程序或类似的东西都可以访问的数据库。
-
我明白了。太糟糕了。我会继续自己做更多的研究,否则我将不得不像你说的那样找到其他东西。感谢您的帮助。
-
我也做了更多的研究,请参阅此处的帖子stackoverflow.com/questions/48899692/… 如果是这种情况,您最好的选择是从两个应用程序都可以访问的数据库中读取/写入。