88
99arguments_t ::arguments_t () :
1010 managed_application (_X(" " )),
11- own_path (_X(" " )),
12- app_dir (_X(" " )),
11+ host_path (_X(" " )),
12+ app_root (_X(" " )),
1313 app_argc(0 ),
1414 app_argv(nullptr ),
1515 core_servicing(_X(" " )),
@@ -62,34 +62,11 @@ bool parse_arguments(
6262{
6363 arguments_t & args = *arg_out;
6464
65- // Try to use argv[0] as own_path to allow for hosts located elsewhere
66- if (argc >= 1 )
67- {
68- args.own_path = argv[0 ];
69- if (!args.own_path .empty ())
70- {
71- trace::info (_X (" Attempting to use argv[0] as path [%s]" ), args.own_path .c_str ());
72- if (!get_path_from_argv (&args.own_path ))
73- {
74- trace::warning (_X (" Failed to resolve argv[0] as path [%s]. Using location of current executable instead." ), args.own_path .c_str ());
75- args.own_path .clear ();
76- }
77- }
78- }
65+ args.host_path = init.host_info .host_path ;
7966
80- // Get the full name of the application
81- if (args.own_path .empty () && (!pal::get_own_executable_path (&args.own_path ) || !pal::realpath (&args.own_path )))
67+ if (init.host_mode != host_mode_t ::apphost)
8268 {
83- trace::error (_X (" Failed to resolve full path of the current executable [%s]" ), args.own_path .c_str ());
84- return false ;
85- }
86-
87- auto own_name = get_filename (args.own_path );
88- auto own_dir = get_directory (args.own_path );
89-
90- if (init.host_mode != host_mode_t ::standalone)
91- {
92- // corerun mode. First argument is managed app
69+ // First argument is managed app
9370 if (argc < 2 )
9471 {
9572 return false ;
@@ -100,32 +77,28 @@ bool parse_arguments(
10077 trace::error (_X (" Failed to locate managed application [%s]" ), args.managed_application .c_str ());
10178 return false ;
10279 }
103- args.app_dir = get_directory (args.managed_application );
80+ args.app_root = get_directory (args.managed_application );
10481 args.app_argc = argc - 2 ;
10582 args.app_argv = &argv[2 ];
10683 }
10784 else
10885 {
109- // coreconsole mode. Find the managed app in the same directory
110- pal::string_t managed_app (own_dir);
111-
112- managed_app.append (get_executable (own_name));
113- managed_app.append (_X (" .dll" ));
114- args.managed_application = managed_app;
86+ // Find the managed app in the same directory
87+ args.managed_application = init.host_info .app_path ;
11588 if (!pal::realpath (&args.managed_application ))
11689 {
11790 trace::error (_X (" Failed to locate managed application [%s]" ), args.managed_application .c_str ());
11891 return false ;
11992 }
120- args.app_dir = own_dir ;
93+ args.app_root = init. host_info . dotnet_root ;
12194 args.app_argv = &argv[1 ];
12295 args.app_argc = argc - 1 ;
12396 }
12497
12598 if (!init.deps_file .empty ())
12699 {
127100 args.deps_path = init.deps_file ;
128- args.app_dir = get_directory (args.deps_path );
101+ args.app_root = get_directory (args.deps_path );
129102 }
130103
131104 for (const auto & probe : init.probe_paths )
@@ -135,7 +108,7 @@ bool parse_arguments(
135108
136109 if (args.deps_path .empty ())
137110 {
138- const auto & app_base = args.app_dir ;
111+ const auto & app_base = args.app_root ;
139112 auto app_name = get_filename (args.managed_application );
140113
141114 args.deps_path .reserve (app_base.length () + 1 + app_name.length () + 5 );
@@ -151,7 +124,7 @@ bool parse_arguments(
151124
152125 pal::get_default_servicing_directory (&args.core_servicing );
153126
154- setup_shared_store_paths (init, own_dir , &args);
127+ setup_shared_store_paths (init, get_directory (args. host_path ) , &args);
155128
156129 return true ;
157130}
0 commit comments