Which is weird, cause in fact config.txt is in content folder.are you guys blind or something? it clearly states config.txt was not found, simply because the file never was in the same folder as wupclient.py!
Which is weird, cause in fact config.txt is in content folder.are you guys blind or something? it clearly states config.txt was not found, simply because the file never was in the same folder as wupclient.py!
Dude your wupclient.py folder should look like this with config.txt in the same folder as wupclient.py http://imgur.com/QmO9n5iWhich is weird, cause in fact config.txt is in content folder.
That makes sense, but I put that config.txt on the content folder, anyways somehow I got it working and I don't even know how :cDude your wupclient.py folder should look like this with config.txt in the same folder as wupclient.py http://imgur.com/QmO9n5i
Somehow I got it working but I don't know howi think you managed to sucessfully upload it in one of the countless previous attempts. based on the screenshots, it looks like you managed to do everything needed.
did it actually work? have you tried yet?
I've made a script that basically automates the entire procoess.So I think in the end the best thing is to use that now released script to install haxchi, I wanted to make something far more complex directly on the wiiu itself but that would require a LOT of work. I've peeked at MCP_CopyTitle that smea originally suggested but for that to work you have to have the already fully extracted game on your sd card to copy it from sd back onto the internal storage so you'd need your ticket or a game wupclient dump already to even do that so in the end its just easier to use wupclient itself to also install it remotely.
import sys
import wupclient
if __name__ == '__main__':
installid = raw_input("VC lower ID (last 8 chars): ")
installLocation = raw_input("VC Location (NAND, USB): ")
if(installLocation.lower() == "nand"):
location = "mlc01"
elif(installLocation.lower() == "usb"):
location = "usb01"
else:
print("'" + installLocation + "' is not a suitable answer")
input()
sys.exit()
print("Connecting to wupserver")
w = wupclient.wupclient()
if(w.s == None):
print("Failed to connect to wupserver!")
exit()
print("Connected!")
wupclient.w = w
print("Mounting SD")
ret = wupclient.mount_sd()
if(ret == 0):
print("Failed to mount SD!")
else:
print("Mounted! Installing Haxchi from SD")
ret = w.cp("/vol/storage_sdcard/haxchi/rom.zip", "/vol/storage_" + location + "/usr/title/00050000/" + installid + "/content/0010/rom.zip")
if(ret == 0):
print("Failed to install Haxchi!")
else:
print("Installing Meta files")
ret = w.cpdir("/vol/storage_sdcard/haxchi/meta", "/vol/storage_" + location + "/usr/title/00050000/" + installid + "/meta")
if(ret == 0):
print("Failed to install Meta files!")
else:
print("Downloading meta.xml for modification")
ret = w.dl("/vol/storage_" + location + "/usr/title/00050000/" + installid + "/meta/meta.xml")
if(ret == 0):
print("Download failed!")
else:
customname = raw_input("Custom title name: ")
print("Modifying meta.xml")
linecount = 0
f1 = open('meta.xml', 'r')
f2 = open('meta.xml.tmp', 'w')
for line in f1:
linecount = linecount + 1
if(72 <= linecount <= 77 or 79 <= linecount <= 82):
customline = line[0:42] + customname + line[-15:]
f2.write(customline)
elif(linecount == 78 or linecount == 83):
customline = line[0:43] + customname + line[-16:]
f2.write(customline)
else:
f2.write(line)
f1.close()
f2.close()
print("Uploading modified meta.xml")
ret = w.up("meta.xml.tmp", "/vol/storage_" + location + "/usr/title/00050000/" + installid + "/meta/meta.xml")
if(ret == 0):
print("Meta.xml upload failed!")
else:
print("Attempting to upload config.txt")
ret = w.cp("/vol/storage_sdcard/haxchi/config.txt", "/vol/storage_" + location + "/usr/title/00050000/" + installid + "/content/config.ini")
if(ret == 0):
print("Config.ini upload failed, normal for older haxchi versions")
else:
print("Applying chmod to config.txt")
ret = w.chmod("/vol/storage_" + location + "/usr/title/00050000/" + installid + "/content/config.txt", 0x644)
if(ret != 0):
print("Install complete!")
else:
print("chmod failed!")
if(w.fsa_handle != None):
w.close(w.fsa_handle)
w.fsa_handle = None
if(w.s != None):
w.s.close()
w.s = None
print("Press enter to exit")
input()
True.yea no, I'd much rather point people to this thread instead since its far cleaner and actually safe and readable.
While I do agree that one is cleaner and easier to read, I don't see how mine is "not safe". If you could please elaborate about how mine is not safe I could fix that problem.yea no, I'd much rather point people to this thread instead since its far cleaner and actually safe and readable.
Your code being ugly is dangerous. Ugly code causes problems. Problems cause bricks.While I do agree that one is cleaner and easier to read, I don't see how mine is "not safe". If you could please elaborate about how mine is not safe I could fix that problem.
I could easily spend time and make it cleaner and easier to read (which I probably will do once I get the time), but I don't like how the other version restricts basically everything, even the meta files. Absolute worst case when messing with the meta.xml and images is that the game doesn't boot and you have to reinstall or copy over corrected files.
Except for the fact that I built this code off of one of FIX94's own python scripts from wuphax. The only thing I've really changed at this point was the commands being sent to wupserver and the code to edit the downloaded meta.xml. The basic format though was left how it was.Your code being ugly is dangerous. Ugly code causes problems. Problems cause bricks.
And how about instead of just saying it's bad, be constructive and give advice on how I could make it better. It's basically the first thing I've written in python, so please instead of just dumping on it give me advice.Your code being ugly is dangerous. Ugly code causes problems. Problems cause bricks.
Clean it up.Except for the fact that I built this code off of one of FIX94's own python scripts from wuphax. The only thing I've really changed at this point was the commands being sent to wupserver and the code to edit the downloaded meta.xml. The basic format though was left how it was.
--------------------- MERGED ---------------------------
And how about instead of just saying it's bad, be constructive and give advice on how I could make it better. It's basically the first thing I've written in python, so please instead of just dumping on it give me advice.
I just had to...Your code being ugly is dangerous. Ugly code causes problems. Problems cause bricks.
You can use the Homebrew LAuncher one with a config.txt to boot the Rednand by just pressing a button while the HBL is booting.Is it possible can anyone answer my question I have red you only need 1 bought legit vc title on systemnand to put the hack on and then you can put others on back ups is this correct so for example I have used Brain Training as my homebrew launcher and then could I use Mario Kart DS back up as my Rednand booter or does it have to be all legit bought games from eshop to use as a base game. Thanks.
I have installed the latest brain training does that work like you mentioned then so I just press other buttons to load different contents or do you have to upload more content for it to work like you say?You can use the Homebrew LAuncher one with a config.txt to boot the Rednand by just pressing a button while the HBL is booting.
No need for a second DS game.
Did you upload the config.txt file when you made the Haxchi installation?I have installed the latest brain training does that work like you mentioned then so I just press other buttons to load different contents or do you have to upload more content for it to work like you say?
No sorry I didnt where do I get the config txt from and instructions?Did you upload the config.txt file when you made the Haxchi installation?
If so then yeah, pressing A will load a fw.img from your SD's root and pressing B will load fw.img from inside a rednand folder (SD:/rednand/fw.img)