; 3. Delete prefs and cache ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+!macro gencache
+ SetShellVarContext all
+ CreateDirectory "$APPDATA\\VideoLAN"
+ CreateDirectory "$APPDATA\\VideoLAN\\VLC"
+ ExecWait "$INSTDIR\vlc-cache-gen.exe $APPDATA\\VideoLAN\\VLC"
+ SetShellVarContext current
+!macroend
+
!macro delprefs
StrCpy $0 0
!define Index 'Line${__LINE__}'
Goto "${Index}-Loop"
"${Index}-End:"
!undef Index
+ SetShellVarContext all
+ RMDir /r "$APPDATA\\VideoLAN"
+ SetShellVarContext current
!macroend
;;;;;;;;;;;;;;;
; VLC.exe, libvlc.dll
!insertmacro InstallFile vlc.exe
!insertmacro InstallFile vlc.exe.manifest
+ !insertmacro InstallFile vlc-cache-gen.exe
; All dlls
!insertmacro InstallFile *.dll
@BUILD_SKINS_TRUE@ !insertmacro InstallFolder skins
@BUILD_HTTPD_TRUE@ !insertmacro InstallFolder http
@BUILD_LUA_TRUE@ !insertmacro InstallFolder lua
+ !insertmacro gencache
; URLs
/* Contruct the special search path for system that have a relocatable
* executable. Set it to <vlc path>/plugins. */
assert( vlcpath );
-
+#ifndef WIN32
if( asprintf( &path, "%s" DIR_SEP "plugins", vlcpath ) != -1 )
vlc_array_append( arraypaths, path );
+#else
+ /* Store the plugins cache in the common AppData folder */
+ char commonpath[PATH_MAX] = "";
+ int res = snprintf( commonpath, PATH_MAX -1, "%s\\VideoLAN\\VLC", config_GetConfDir());
+ if(res == -1 || res >= PATH_MAX)
+ {
+ vlc_array_destroy( arraypaths );
+ free(path);
+ return;
+ }
+#endif
/* If the user provided a plugin path, we add it to the list */
char *userpaths = var_InheritString( p_this, "plugin-path" );
size_t offset = p_module_bank->i_cache;
if( b_reset )
+#ifndef WIN32
CacheDelete( p_this, path );
+#else
+ CacheDelete( p_this, commonpath );
+#endif
else
+#ifndef WIN32
CacheLoad( p_this, p_module_bank, path );
+#else
+ CacheLoad( p_this, p_module_bank, commonpath );
+#endif
msg_Dbg( p_this, "recursively browsing `%s'", path );
/* Don't go deeper than 5 subdirectories */
AllocatePluginDir( p_this, p_bank, path, 5 );
+
+#ifndef WIN32
CacheSave( p_this, path, p_module_bank->pp_cache + offset,
p_module_bank->i_cache - offset );
+#else
+ CacheSave( p_this, commonpath, p_module_bank->pp_cache + offset,
+ p_module_bank->i_cache - offset );
+#endif
free( path );
}