【问题标题】:Why can't i use this code to make a minecraft launcher in c#?为什么我不能使用此代码在 c# 中制作我的世界启动器?
【发布时间】:2013-08-03 13:32:31
【问题描述】:

我到处搜索以了解如何制作自定义的 Minecraft 启动器。我设法创建了这段代码,它应该可以工作,但遗憾的是它没有。我登录但它永远不会启动,但是有一秒钟我在鼠标旁边找到了加载环。这是我的代码:

ProcessStartInfo start = new ProcessStartInfo();
// Enter in the command line arguments, everything you would enter after the executable name itself
start.Arguments = @"-Xmx1G -Djava.library.path=%APPDATA%\.minecraft\versions\1.6.2\1.6.2-natives -cp %APPDATA%\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;%APPDATA%\.minecraft\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;%APPDATA%\.minecraft\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;%APPDATA%\.minecraft\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;%APPDATA%\.minecraft\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;%APPDATA%\.minecraft\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;%APPDATA%\.minecraft\libraries\argo\argo\2.25_fixed\argo-2.25_fixed.jar;%APPDATA%\.minecraft\libraries\org\bouncycastle\bcprov-jdk15on\1.47\bcprov-jdk15on-1.47.jar;%APPDATA%\.minecraft\libraries\com\google\guava\guava\14.0\guava-14.0.jar;%APPDATA%\.minecraft\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;%APPDATA%\.minecraft\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;%APPDATA%\.minecraft\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;%APPDATA%\.minecraft\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;%APPDATA%\.minecraft\libraries\com\google\code\gson\gson\2.2.2\gson-2.2.2.jar;%APPDATA%\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl\2.9.0\lwjgl-2.9.0.jar;%APPDATA%\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.0\lwjgl_util-2.9.0.jar;%APPDATA%\.minecraft\versions\1.6.2\1.6.2.jar net.minecraft.client.main.Main --username playername --session token:"+ words[3] + @":" + words[4]+ @" --version 1.6.2 --gameDir %APPDATA%\.minecraft --assetsDir %APPDATA%\.minecraft\assets";
start.FileName = @"c:\Program Files (x86)\java\jre7\bin\javaw.exe";
// Do you want to show a console window?
start.CreateNoWindow = true;
System.Diagnostics.Process.Start(start);

这只是让我的鼠标加载了一秒钟,然后什么也没有打开。没有日志,崩溃,错误,没有错。这是在 Visual Studio 2012 上编译的 Visual c#。

【问题讨论】:

  • 为了便于阅读:您可以将每个单独的参数放在List<string> 中,然后使用String.Join() 将其与空格字符组合起来作为分隔符。
  • 您确定命令和参数正确吗?您是否尝试过从命令行运行它?
  • 安东尼奥:我还没试过。我马上就要试试了。
  • Antonio:我检查了命令行并且命令有效。

标签: c#


【解决方案1】:

您提供的参数中有一个环境变量 - %APPDATA%

默认情况下命令行会扩展它,但 .net 库不会。

How do I ensure c# Process.Start will expand environment variables?

【讨论】:

    【解决方案2】:

    正如 Pete Kirkham 所说,您需要设置环境变量。 您可以在启动 Process 之前设置它,例如:

    var appDataPath = "your path";
    start.EnvironmentVariables.Add("APPDATA", appDataPath);
    

    【讨论】:

    • 那我应该如何检查用户的 AppData 路径?
    • 好的。发现了,但我收到一个错误:mscorlib.dll 中发生了“System.ArgumentException”类型的未处理异常附加信息:项目已添加。字典中的键:'APPDATA' 正在添加的键:'APPDATA'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    相关资源
    最近更新 更多