You can't get solutions with only vector expressions, since there are individual conditions on vector components.
Edit: Update after major changes of equations by OP.
General expression for equations
weqs[i_] :=
With[{x = Array[x, i], v = Array[v, i], a = Array[a, i],
zero = ConstantArray[0, i]}, {Thread[x + w a - v == zero],
a.x == b, Thread[v >= zero], Thread[x >= zero], a.a != 0,
Thread[v*x == zero]} // Flatten]
var[i_] := Join[Array[x, i], Array[v, i], {w}]
sol[i_] := Solve[weqs[i], var[i], Reals] // Simplify;
tfsol[i_] :=
TraditionalForm[
sol[i] //.
Or -> Composition[(Column[#, Right,
Background -> {{White, LightGray}}, Frame -> All] &), List]]
tfsol[1]
tfsol[2]
tfsol[3]
Edit 2: Appendix
It turnes out, that the solutions for w are combinations of the a-vector with tuples of {0,1} and b
ww[i_] := -b/Rest[Plus @@ (Array[a, i]*Array[a, i]*#) & /@ Tuples[{0, 1}, i]]
ww[1]
(* {-(b/a[1]^2)} *)
ww[3]
(* {-(b/a[3]^2), -(b/a[2]^2), -(b/(a[2]^2 + a[3]^2)), -(b/a[1]^2),
-(b/(a[1]^2 + a[3]^2)), -(b/(a[1]^2 + a[2]^2)),
-(b/(a[1]^2 + a[2]^2 + a[3]^2))} *)
You can use that knowlewdge to get x and v more easily for higher dimensions. With this changed code
weqs[i_] :=
With[{x = Array[x, i], v = Array[v, i], a = Array[a, i],
zero = ConstantArray[0, i]}, {Thread[x + w a - v == zero],
a.x == b, Thread[v >= zero], Thread[x >= zero],
Thread[v*x == zero]} // Flatten]
ww[i_] := -b/
Rest[Plus @@ (Array[a, i]*Array[a, i]*#) & /@ Tuples[{0, 1}, i]]
var[i_] := Join[Array[x, i], Array[v, i]]
sol[i_] := {w -> #,
Solve[weqs[i] /. w -> #, var[i], Reals] // Simplify} & /@ ww[i];
tfsol[i_] :=
TraditionalForm[
sol[i] //.
Or -> Composition[(Column[#, Right,
Background -> {{White, LightGray}}, Frame -> All] &), List]]
tfsol[4]
or try to find also algorithms for x and v.