Failure invoking NSIS command

pdeploy standalone works, but pdeploy installer produces:

C:\Users\craig\MyDIR\Release>pdeploy -n some_namex -v 0.1.0 -P win32 -s CAD.0.1.
0.win32.p3d installer
:AppRunner: Total Panda3D disk space used: 204 MB
:AppRunner: Configured max usage is: 2048 MB
:HostInfo: Downloading contents file [ https://runtime.panda3d.org/contents.xml?
1346558553 ]

:downloader: [04A65178] begin GET [ https://runtime.panda3d.org/contents.xml?134
6558553 ]
:HostInfo(warning): Successfully downloaded https://runtime.panda3d.org/contents
.xml?1346558553
Using author "craig" <craig@FancyWin> with ID org.panda3d
:Installer: Creating ./win32/ProvelCAD 0.1.0.exe...
:PackageInfo: p3dembed downloading http://runtime.panda3d.org/p3dembed/win32/p3d
embed.win32.xml
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/p3dembed/win32/p3
dembed.win32.xml ]
:PackageInfo: p3dembed downloading http://runtime.panda3d.org/p3dembed/win32/p3d
embed.win32.mf.1.pz
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/p3dembed/win32/p3
dembed.win32.mf.1.pz ]
:PackageInfo: Uncompressing /c/Users/craig/AppData/Local/Temp/CAD.0.1.0.win32928
d3f/p3dembed/win32/p3dembed.win32.mf.1.pz to /c/Users/craig/AppData/Local/Temp/C
AD.0.1.0.win32928d3f/p3dembed/win32/p3dembed.win32.mf
:PackageInfo: Unpacking /c/Users/craig/AppData/Local/Temp/CAD.0.1.0.win32928d3f/
p3dembed/win32/p3dembed.win32.mf
:Standalone: Creating /c/Users/craig/AppData/Local/Temp/some_namex.exe...
:HostInfo: Downloading contents file [ https://runtime.panda3d.org/contents.xml?
1346558562 ]

:downloader: [04A65178] begin GET [ https://runtime.panda3d.org/contents.xml?134
6558562 ]
:HostInfo(warning): Successfully downloaded https://runtime.panda3d.org/contents
.xml?1346558562
:PackageInfo: images downloading http://runtime.panda3d.org/images/images.xml
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/images/images.xml
 ]
:PackageInfo: images downloading http://runtime.panda3d.org/images/images.mf.1.p
z
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/images/images.mf.
1.pz ]
:PackageInfo: Uncompressing /c/Users/craig/AppData/Local/Temp/some_namex606b50/w
in32/images/images.mf.1.pz to /c/Users/craig/AppData/Local/Temp/some_namex606b50
/win32/images/images.mf
:PackageInfo: Unpacking /c/Users/craig/AppData/Local/Temp/some_namex606b50/win32
/images/images.mf
:PackageInfo: morepy downloading http://runtime.panda3d.org/morepy/cmu_1.8/win32
/morepy.cmu_1.8.win32.xml
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/morepy/cmu_1.8/wi
n32/morepy.cmu_1.8.win32.xml ]
:PackageInfo: morepy downloading http://runtime.panda3d.org/morepy/cmu_1.8/win32
/morepy.cmu_1.8.win32.mf.1.pz
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/morepy/cmu_1.8/wi
n32/morepy.cmu_1.8.win32.mf.1.pz ]
:PackageInfo: Uncompressing /c/Users/craig/AppData/Local/Temp/some_namex606b50/w
in32/morepy/cmu_1.8/morepy.cmu_1.8.win32.mf.1.pz to /c/Users/craig/AppData/Local
/Temp/some_namex606b50/win32/morepy/cmu_1.8/morepy.cmu_1.8.win32.mf
:PackageInfo: Unpacking /c/Users/craig/AppData/Local/Temp/some_namex606b50/win32
/morepy/cmu_1.8/morepy.cmu_1.8.win32.mf
:PackageInfo: panda3d downloading http://runtime.panda3d.org/panda3d/cmu_1.8/win
32/panda3d.cmu_1.8.win32.xml
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/panda3d/cmu_1.8/w
in32/panda3d.cmu_1.8.win32.xml ]
:PackageInfo: panda3d downloading http://runtime.panda3d.org/panda3d/cmu_1.8/win
32/panda3d.cmu_1.8.win32.mf.1.pz
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/panda3d/cmu_1.8/w
in32/panda3d.cmu_1.8.win32.mf.1.pz ]
:PackageInfo: Uncompressing /c/Users/craig/AppData/Local/Temp/some_namex606b50/w
in32/panda3d/cmu_1.8/panda3d.cmu_1.8.win32.mf.1.pz to /c/Users/craig/AppData/Loc
al/Temp/some_namex606b50/win32/panda3d/cmu_1.8/panda3d.cmu_1.8.win32.mf
:PackageInfo: Unpacking /c/Users/craig/AppData/Local/Temp/some_namex606b50/win32
/panda3d/cmu_1.8/panda3d.cmu_1.8.win32.mf
:PackageInfo: wx downloading http://runtime.panda3d.org/wx/cmu_1.8/win32/wx.cmu_
1.8.win32.xml
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/wx/cmu_1.8/win32/
wx.cmu_1.8.win32.xml ]
:PackageInfo: wx downloading http://runtime.panda3d.org/wx/cmu_1.8/win32/wx.cmu_
1.8.win32.mf.1.pz
:downloader: [04A65178] begin GET [ http://runtime.panda3d.org/wx/cmu_1.8/win32/
wx.cmu_1.8.win32.mf.1.pz ]
:PackageInfo: Uncompressing /c/Users/craig/AppData/Local/Temp/some_namex606b50/w
in32/wx/cmu_1.8/wx.cmu_1.8.win32.mf.1.pz to /c/Users/craig/AppData/Local/Temp/pr
ovel_cad606b50/win32/wx/cmu_1.8/wx.cmu_1.8.win32.mf
:PackageInfo: Unpacking /c/Users/craig/AppData/Local/Temp/some_namex606b50/win32
/wx/cmu_1.8/wx.cmu_1.8.win32.mf
['C:\\Panda3D-1.8.0/nsis/makensis.exe', '/V2', 'C:\\Users\\craig\\AppData\\Local
\\Temp\\some_namex.nsi']
File: "C:\Users\craig\AppData\Local\Temp\some_namex606b50\win32/contents.xml" ->
 no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
   /oname=outfile one_file_only)
Error in script "C:\Users\craig\AppData\Local\Temp\some_namex.nsi" on line 48 --
 aborting creation process
:Installer(warning): Failure invoking NSIS command.

There is no file at the path “C:\Users\craig\AppData\Local\Temp\some_namex.nsi” so I assume its automatically removed before I can see whats wrong with it.

I’m on Windows 7 trying to make a installer for Windows. Using Panda3d 1.8.0.

Any suggestions?

Well, the error states:

File: "C:\Users\craig\AppData\Local\Temp\some_namex606b50\win32/contents.xml" -> 
 no files found. 
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] | 
   /oname=outfile one_file_only) 

So the first thing to figure out is why contents.xml does not exist at that location. Does that directory exist?

I just ran into this same error, and I noticed that in the error report, which you quoted, one of the slashes is of the incorrect type. Could that be the cause of the error?

The slash in question is the one between win32 and contents.xml.

Nice spotting! That very well may be the issue, but thats an auto-generated file at an auto generated path, so its a panda bug if thats the issue. I wonder if there is a nice work around.

rdb, I’ll rerun and check for that directory shortly. I noticed that some of the files that clearly did exist when it was running are not there when its done though (such as the nsis script) so some things are apparently getting deleted when it fails/finishes.

Looking at the source, David fixed this issue a while ago. Can you try pdeploy_dev.p3d from runtime-dev.panda3d.org and see if that works? (Just be sure not to distribute any installers created with pdeploy_dev, it is just for testing!)

I get this:

C:\Users\craig\ZiCAD\Release>"C:\Program Files (x86)\Panda3D\panda3d.exe"  .\pde
ploy_dev.p3d -n some_namex -v 0.1.0 -P win32 -s CAD.0.1.0.win32.p3d installer
:downloader: [02C74D68] begin GET [ https://runtime-dev.panda3d.org/contents.xml
?1346998539 ]
:downloader: [02C78170] begin GET [ https://runtime-dev.panda3d.org/contents.xml
?1346998539 ]

And 10 minutes+ later, its still showing that. I killed it and ran again, still stuck there.

I also tested it, and mine is hanging at the same place after 5+ hours.

Strange. Perhaps you need the latest buildbot version of the runtime to use the development runtime?

Okay. Do I need literally the latest version, or do I need the version that coincides with the pdeploy-dev you linked?

I’m ready to put my game up on Steam’s Greenlight program and I’d really like to be able to include a demo, so if there’s anyway to get pdeploy working properly in the next week or so, I want to pursue it.

I would imagine that you need to get the coinciding version. I’m not sure, though, as I don’t even know why this issue is occurring in the first place.

You can distribute games with pdeploy_dev, as long as you make sure you use the “installer” option with the -s flag so that it doesn’t try to contact the Panda website to try and download the latest development runtime distribution every day.

I’m just going to revert back to 1.7.2 for the time being, then. It’s annoying to not be able to create an installer with custom icons, but this problem is more than I care to deal with right now.

You could create an installer using 1.7.2, extract its files and recreate the installer for these files manually invoking nsis - you can use the nsi file generated by pdeploy as reference and add the icon instructions to it.

I don’t know anything about nsis, so I didn’t know that, thanks. I’ll look into nsis and see how that’s done.

Unfortunately the nsi file created by pdeploy is cleaned up, so I haven’t got it. Is there a way to get a hold of it?

The nsi file is generated by DeploymentTools.py, you can find its generation into the buildNSIS method. If you need a nsi file similar to the ones built by pdeploy, let me know.

Woo hoo! I found a work around for this.

When I was running pdeploy, mine also crashed at the makensis call. As you mentioned, the slashes screw things up on windows, so they need to be changed. You are also correct that the system automatically deletes the required files.

HOWEVER, if you are quick with your fingers, you can copy over the folders that are needed, the .exe, and the .nsi file (All under the TEMP). The nsi file isn’t created until a little later on, so you have to be quick on your toes. Once the application fails, I just copied those files back into the TEMP folder where they were originally created. Then just open the nsi file and fix the slashes. Do a search and replace for all "/"s for ""s. Just be careful that there is a /r option towards the end of the file that needs to stay a forward slash. (as in RMDir /r “$INSTDIR”).

Once I did all that, I just ran the makensis.exe /v2

And there popped out my exe! YAY.

Hopefully that helps.

I would rather wait for the fix than having to perform such programming gymnastics just to accomplish this simple task.

This issue was reported here ( bugs.launchpad.net/panda3d/+bug/934282 ) and has been fixed. The fix should be included in the upcoming 1.8.1 release.

I just tried to create a deploy package and it also failed at the makensis part. Apparently the fix was not included in 1.8.1 so okay. I’ll try the listed work-around.

Okay, now this is weird. The error message was “makensis utility not found”. Oddly, when I went looking, the entire folder was in another directory. WHAT??

I have had problems from day one with the install, had to re-install, not really happy about how oddly things went. This has been an absolute struggle. I just spent eight weeks making a game that should have only taken a couple of weeks, but I chalk a lot up to my inexperience with Panda. Yet, there have been so many things like being unable to change view angles, and not getting textures working and so on…

Anyway, it’s far too late in the process to grouse. I got to the end, but still, why in the world are things in oddball places like this? Something is very plainly screwy. How can we prevent this from happening to other people?

And, where should I place the NSIS folder for things to work and actually make a package? Just want to be certain.