The project variable AppDir is only set after the Install.Process.Archive Components.Parse Archive Components event. If your callout runs prior to this event, it cannot use this variable.
One of the key project variables that you may use in a callout is the $(AppDir) variable. This variable represents the location into which the application will be installed.
AppDir is only set after the following event in package installation:
Install.Process.Archive Components.Parse Archive Components
If your callout runs prior to this event, it cannot use this variable.
The value of AppDir may change during package installation. If there is a dependent package then at some stage later in the processing, the original value of AppDir will be stored, and reset to that of the dependent package (using a stack implementation for this processing). The original value will be restored after processing dependencies.