Forum

Understanding paths while exporting

Hi all

Can somebody explain to me why I can see the Kryptopunk image during runtime but not after export?
Assuming you copy the asset folder next to the exported .exe

PathDemo.zip (103.9 KB)

Is this an expected behaviour? Seems like the Iobox stores something else than it displays?
I am trying to get the best practice for our asset handling during development and for export.

Thx

see: Exporting Applications | vvvv gamma documentation

Yes i saw this and this works. You have to save your path as a string in an iobox and append it to the application path.

But I could not find a way how to select this path via the file dialog (via iobox) during patching. There must be a way no?

That is super confusing

yes, this is correct, it stores a relative path in the .vl file, and on loading the document the path gets converted to an absolute one that you then see in the IOBox. so in the export case, you just have the relative path in there.

you can see that in the XML:

<Pad Id="VkIvsmQySLfNllw5oukkmL" Comment="" Bounds="883,309,527,38" ShowValueBox="true" isIOBox="true" Value="assets\BoredApe.jpg">
            <p:TypeAnnotation LastCategoryFullName="IO" LastSymbolSource="CoreLibBasics.vl">
              <Choice Kind="TypeFlag" Name="Path" />
            </p:TypeAnnotation>
            <p:ValueBoxSettings>
              <p:fontsize p:Type="Int32">17</p:fontsize>
            </p:ValueBoxSettings>
          </Pad>

so basically, get rid of the MakeRelative node.

Relative to the location of the document! But not relative to the Application path! Wouldnt it be handy if the export would resolve all stored pathes and make them relative against the application path? As an option? Or as an option at the iobox?

that could also be random, as the folders could be anywhere on disk. i think it should just display what it actually stores and that is what you get on export. the resolved path (that you see now displayed as value) should only be a hint infobox, or even only in the tooltip.

but we have many issues regarding paths, it will get a rework at some point.

i’m afraid the closest you’ll get to at this point is using CTRL+rightclick on the string IOBox to choose the path via a filedialog. still this will be an absolute path that you’ll have to reduce to relative manually.

in general it just still applies what the mentioned docu says in the first line: “Using referenced external assets in exported executables for now is a bit cumbersome”

note though that this actually only applies if you’re organising the .vl documents of your project in subfolders. as long as you’re placing all .vl documents next to your main .vl documents, you can simply use normal path IOBoxes instead of ApplicationPath node + relative string.

Heads up: A fix for this is upcoming soon

1 Like

In the upcoming build, this is fixed.
You’ll also see another option in the exporter regarding asset management.
While developing you might be frustrated by the need to always copy all your assets. While in the long run there will be an option to let the exporter do the synchronization, for now, added the possibility to point to the original files, thus no need to copy the assets over all the time.

Actually the absolute path io boxes for files is the most frustrating thing in the world, since with relative paths you know witch folder you have to copy assets against patch but with absolute paths you don’t know where the root is

this issue is fixed in 2021.4.9: no more need to use ApplicationPath + string. Path IOBoxes now simply behave the way you’d expect. on top you now have two new options in the exporter, see Assets.

5 Likes

Vielen Dank an die Devvvvs