Errors when opening a pxp file on different computers

Hi, 

I have written software in IGOR that I need to circulate amongst my peers. The program runs on a bunch of procedure files that are all saved within the IGOR pxp. However, when I sent the pxp file to another person, their computer threw errors while opening it.

-The first error was about the symbolic path. Upon opening, the IGOR program hunted for a symbolic path and failed since this path led to the downloads folder on my windows computer (don't know how since I didn't set it). Not sure how to fix this error. Do I need to set some kind of a universal path that works on every computer? 

- The second error is about missing procedure files. I double-checked that all procedure files exist in the pxp file (and minimized) before I clicked save. But when the pxp is opened on a different computer, errors come up with one or more procedure files stated as missing. 

I'd be thankful if you could please advise how to fix these problems so that I could effectively distribute the software.  

Sincerely, 

Peeyush

If you're sending the procedures files as separate files on disk, they'll need to be placed in the same location relative to Igor on your peers' computers.

I recommend that you instead adopt your procedures files as procedure windows into the experiment so the experiment is all they need and they can put the experiment file anywhere.

Look in the File menu for Adopt Files.

Hi,

If you built the procedure files completely in the experiment then they should be included.  If however you have included them then they are external to the experiment file.  External procedure files typically reside in either of two places, the wavemetrics procedures in the application folder. Alternatively they are User Procedures in the Igor Pro 9 (or 8) User Files in the documents directory of your computer.  Open your experiment and in the main procedure window are there any include statements?  Also double check the procedures in the experiment by going to the Window menu and look at the procedure windows item and see if there is something you may of overlooked.

The are using standard procedures that come with the distribution of the program, then other users should have them also.  If used or created a custom procedure file then you will need to provide the other users with a copy and have them place in the appropriate folder.

Alternatively, within your experiment file you could "adopt" all the procedures and then they would reside in the experiment. Note: if you adopt the procedures, then they are not available for other experiments.

For the path issue: I would start by opening the experiment on your computer and then look at path status in the misc menu item and see what the experiment is expecting.  I would then prune unnecessary paths - making sure you don't break anything in the process, test your functionality.

Andy

One of three generally approaches can be taken to make an experiment (pxp file) transportable to other users. In all cases, the starting point is a new experiment. In all cases, pre-fill the experiment with all required initialization data. Do not read externally stored data files to initialize the experiment. In all cases, before you send out your experiment to other users, a) make a backup locally, b) make a distribution copy according to the method chosen, c) completely delete your local copy and all associated files for it, and d) re-install your local copy from the backup. If this re-installation fails for you, it will fail for your users.

* Write all the functions for the experiment inside the main procedure window for the experiment. Do not split the procedure files into self-standing .ipf files. Provide the users with the pxp file for the experiment. Better still, provide the users with a ZIP archive that contains the pxp experiment file.

* Write procedures in their own self-standing ipf files. Put the ipf files in a designated, appropriately named sub-folder in the User Procedures folder in the Wavemetrics storage location on your computer. INCLUDE the ipf files through appropriate compiler directives in your main procedure window for the experiment. Provide the users with a ZIP archive that contains the pxp file and the sub-folder that contains the ipf procedures. Provide the users with instructions to copy / move the sub-folder to the proper location *before* they start the experiment.

* Write the procedures in their own self-standing ipf files. Put the ipf files in a designated, appropriately named sub-folder in the User Procedures folder in the Wavemetrics storage location on your computer. INCLUDE the ipf files through appropriate compiler directives in your main procedure window for the experiment. Follow the instructions to ADOPT the ipf files into your experiment. Provide the users with the pxp file for the experiment. Better still, provide the users with a ZIP archive that contains the pxp experiment file.

From experience, I can recommend this ...

* Use the first option when the experiment requires only a modest set of functions inside the main procedure for the experiment itself.

* Master how to use the second option as the next step. Become adept at distributing robust ZIP files and schooling your intended users in how to install the experiment and update it as needed.

* Only tackle the third option once you appreciate the second option and find it is limiting for your needs. If interested, look at the instructions in https://www.wavemetrics.com/node/21825 -- Demo Setup Tools Package -- for insights about the steps that you will need to take to ADOPT procedures.

Hi All, 

Thank you so much for your advice and guidance! I'll try out these ideas and see if things work out. When I was initially writing the program, I had to load some procedure (ipf) files into my pxp. Later I clicked save in the pxp file menu and assumed that the procedure files I loaded got locked into the pxp and were all set for use on other computers directly with the pxp. But it seems I needed to adopt them for the pxp to work as a standalone file on any computer.. 

Sincerely, 

Peeyush