You are here

DirectX End-User Runtimes (June 2010) Portable Dev Test 1

32 posts / 0 new
Last post
CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
DirectX End-User Runtimes (June 2010) Portable Dev Test 1

Application: DirectX
Category: Development
Description: Microsoft DirectX is a group of technologies designed to make Windows-based computers an ideal platform for running and displaying applications rich in multimedia elements such as full-color graphics, video, 3D animation, and rich audio.

Download DirectX End-User Runtimes (June 2010) 32 Bit Portable Development Test 1 [0.7MB download / 96.2MB installed]
(MD5: DDD352168A15A9C100B9AC9E264E7308)

Download DirectX End-User Runtimes (June 2010) 64 Bit Portable Development Test 1 [0.7MB download / 126MB installed]
(MD5: 4F7E3C34912155A443B9BDB93A7D704E)

Release Notes:

9.0c (June 2010) Development Test 1 (2012-12-14): Initial release

Other Notes:

To make use of this, a Portable App will have to be designed to use this. I would like to see the Platform handle this and this become official, but for now, devs must set the %PATH% variable to the needed DirectX runtime (A 64 Bit app needs the 64 Bit runtime), AND include the following custom code launcher to get their app to properly use this and handle installed DirectX properly. 32 Bit/64 Bit only apps can simply set the PATH in [Enviroment], whereas apps with a 32 and 64 Bit edition have to get more tricky with custom code.

If you have any improvements to this, let me know and I will edit it.
Custom Launcher Code to Activate DirectX Portable

${SegmentFile}

!macro IsDirectXInstalled 
	StrCpy $R0 true
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_0.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_1.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_2.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_3.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_4.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_5.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_6.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_7.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_8.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_9.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_10.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_0.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_1.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_2.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_3.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_4.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_5.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_6.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\xactengine3_7.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_0.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_1.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_2.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_3.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_4.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_5.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_6.dll"
		StrCpy $R0 false
	${EndIf}
	
	${IfNot} ${FileExists} "$SYSDIR\XAudio2_7.dll"
		StrCpy $R0 false
	${EndIf}
!macroend

${SegmentPre}	
	# Check if DirectX is Installed
	!insertmacro IsDirectXInstalled	
	${If} $R0 == false
		# Register DirectX Files
		${If} ${FileExists} "$PortableAppsDirectory\CommonFiles\DirectX\bin\*.*"
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_0.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_1.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_2.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_3.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_4.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_5.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_6.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_7.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_8.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_9.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_10.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_0.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_1.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_2.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_3.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_4.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_5.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_6.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_7.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_0.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_1.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_2.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_3.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_4.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_5.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_6.dll"` "" ""
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_7.dll"` "" ""
			
			# Register DirectX 64 Bit Files
			${If} $Bits == 64
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_0.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_1.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_2.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_3.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_4.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_5.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_6.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_7.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_8.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_9.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_10.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_0.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_1.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_2.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_3.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_4.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_5.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_6.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_7.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_0.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_1.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_2.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_3.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_4.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_5.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_6.dll"` "" ""
				ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_7.dll"` "" ""
			${EndIf}	
		${EndIf}
	${EndIf}	
!macroend

${SegmentUnload}
	# Check if DirectX is Installed
	!insertmacro IsDirectXInstalled	
	${If} $R0 == false
		# Unregister DirectX Files
		${If} ${FileExists} "$PortableAppsDirectory\CommonFiles\DirectX\bin\*.*"
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_0.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_1.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_2.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_3.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_4.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_5.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_6.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_7.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_8.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_9.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_10.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_0.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_1.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_2.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_3.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_4.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_5.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_6.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine3_7.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_0.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_1.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_2.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_3.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_4.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_5.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_6.dll"` "" ""
			ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\XAudio2_7.dll"` "" ""
			
			# Unregister DirectX 64 Bit Files
			${If} $Bits == 64
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_0.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_1.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_2.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_3.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_4.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_5.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_6.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_7.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_8.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_9.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine2_10.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_0.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_1.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_2.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_3.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_4.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_5.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_6.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\xactengine3_7.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_0.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_1.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_2.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_3.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_4.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_5.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_6.dll"` "" ""
				ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX64\bin\XAudio2_7.dll"` "" ""
			${EndIf}			
		${EndIf}	
	${EndIf}
!macroend
bill_gagliardi
bill_gagliardi's picture
Offline
Last seen: 3 weeks 6 hours ago
Joined: 2008-11-05 22:44
Sweet!!!

I was just working on a portable version of an older game, for myself and this will make it truly portable. Thank you very much. Biggrin

BTW, you might want to put somewhere that this is an online installer. I knew that by comparing the file vs. install size, but you never know... Smile

Bill G.
Frozen St. Paul, MN
land of the frozen mosquito

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
OK I see, it only adds the

OK I see, it only adds the online part to the file if you use installer.ini.

I'll just rename the files. Anyone who DLs them will see it is online that way.

bill_gagliardi
bill_gagliardi's picture
Offline
Last seen: 3 weeks 6 hours ago
Joined: 2008-11-05 22:44
No worries...

and thanks for all your work. Peace... Blum

Bill G.
Frozen St. Paul, MN
land of the frozen mosquito

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
Should be named "DirectX End-User Runtimes (June 2010)"

This package isn't DirectX 9.0c. The correct name is DirectX End-User Runtimes (June 2010), because it have also DX10, DX11 and even componets that doesn't come with DX9.0c, like XAudio and XInput...

Also, thanks for this release, many problems with the portable version of Dolphin can be easily fixed now...

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
Shouldn't be hard to add

Shouldn't be hard to add Default ISO folder and DirectX to Dev Test 4.

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
Coding will be easy, but...

Yep, the hard part will be finding free time (specially in this "chrismas" rhythm) a PC suitable for my works in Dolphin Portable (this one I got here have several issues even when compiling a simple NSIS script!)...

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
Some suggestions

My first suggestion is making the whole variants (x86 and x64) only one installer, the offline installer from Microsoft also have both variants in only one package, and this can prevent any issues that dual-variant apps (like Dolphin Emulator) may have, avoiding confusion, especially to end-users...

The second suggestion is improving the detection code from the custom segment of code that you've attached in the forum topic. We set $R0 as true and then check for the DLLs, if a DLL isn't found then we set $R0 as false. However, since we check if $R0 is true or false only after all files were checked, we can have issues with partial DirectX installs (that may come with alot of games).

For example, the user have some game that installed d3dx9_38.dll with a small package (as explained in developer guidelines, from Microsoft -- very common in Steam games). Then, this user run a portable app that uses the segment code from the topic, the code will set $R0 as true and start checking for the DLLs. The user have d3dx9_38.dll but don't have d3dx9_43.dll, so $R0 will become false and then we'll start registering all portable DLLs, even the d3dx9_38.dll that the user already have. Then the portable app will run and when the user closes it, we'll start unregistering the portable DLLs. However, we'll unregister the portable d3dx9_38.dll and leave the local d3dx9_38.dll that the user have unregistered, and this will break the local app that installed the d3dx9_38.dll (in this example, the Steam game that the user installed).

Also, if the user neither have the local or portable DirectX installed, we need to warn the user and close the portable app, because the app obviously won't work
A safe way could be something like this (in this sample I commented how to register one DLL in a safe way, just make more copies to the additional DLLs):

${SegmentFile}

${SegmentInit}
	; Check if the user have a local copy of this DLL
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_0.dll"
		; The user doesn't have a local copy, check if we have a portable copy
		${If} ${FileExists} "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_0.dll"
			; The user have a portable copy, register it
			ExecDOS::exec `REGSVR32 /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_0.dll"` "" ""
		${Else}
			; The user neither have a portable or local copy, warn the user and quit
			MessageBox MB_OK|MB_ICONEXCLAMATION "This app needs a local or portable copy of DirectX End-User Runtimes"
			Abort
		${EndIf}
		; The user have a local copy, do nothing
	${EndIf}
!macroend

${SegmentUnload}
	; Check if the user have a local copy of this DLL
	${IfNot} ${FileExists} "$SYSDIR\xactengine2_0.dll"
		; The user doesn't have a local copy and the app ran successfully, 
		; so we are certain that the user have the portable copy, unregister it
		ExecDOS::exec `REGSVR32 /u /s "$PortableAppsDirectory\CommonFiles\DirectX\bin\xactengine2_0.dll"` "" ""
	${EndIf}
	; We got there, so, the user have a local copy, do nothing
!macroend

Please note also that I used the Init segment to check for the files to make sure that nothing is changed if neither the portable or local copy of DirectX is present...

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
I've considered on each

I've considered on each check, registering the DLL after the DLL is found missing, as opposed to a register and unregister.

Note that only the listed DLLs in code need registered.

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
About merge of installers

Forgot my suggestion to make only one installer for both variants, the current design (separate installer for each architecture) will work better and allow space saving, specially on small drives...

I didn't noticed this until I messed around with jPortable and jPortable64 today...

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
That is why I separated, as

That is why I separated, as only Dolphin 64 Bit edition can make use of the extra 120MB of DLLs that the 64 Bit plugin provides.

snacdaws
Offline
Last seen: 4 years 4 months ago
Joined: 2012-11-06 10:22
Nice but

It is nice but i was wondering if you could make a directx 10 and a directx 11 portable

other than that it is awesome

thanks

i'm not wierd, i'm just different

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
It does have 10 and 11

It does have 10 and 11 runtimes.

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
Small code cleanup

In the "PortableApps.comInstallerPluginCustom.nsh" file, it's safe to remove lines 83 to 87, this is some garbage left from Dolphin Emulator installer, you won't need them...

Also, I didn't find any other issues, we should mention this in apps ready for official release, as soon as this becomes an official release, better...

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
You mean Goto

You mean

	Goto DownloadResult     ; Check if the download was successful

	; Abort setup and warn the user if download failed
	DownloadResult:
	${If} $0 != "OK"

Is there anything else that can be removed? I didn't fully understand the error checks so I'm not sure what can be cut out.

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
Yep

Actually I'm referring to lines 83 to 86 (not 83 to 87 as I mentioned before):

	Goto DownloadResult     ; Check if the download was successful

	; Abort setup and warn the user if download failed
	DownloadResult:

The label and goto were used to run the error check again after x64 was downloaded because the check would occur only after the the x86 download (used in Dolphin because it includes both variants in only one installer), but since DirectX have a separated installer for x86 and another for x64, this piece of code is completely useless now, you can safely throw it away...

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
I could use some help

I could use some help figuring it out, but I've only been able to make it work on XP Pro SP3 VM.

My Windows 8 x64 laptop wouldn't run XAudio2, neither would a W7 x64 VM.

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
Register the DLL as admin

In Windows Vista, 7 or 8 you need to call regsvr32 as admin to register XAudio DLL successfully, otherwhise the DllRegisterServer will fail and you won't see the error probably because of the /s flag

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
Will try, though I had

Will try, though I had thought that XAudio2 is part of 7 and 8.

There is an XAudio2_8.dll in Windows 8, not a part of this, but part of the OS.

The annoying thing about VBA-M is that it thinks the UAC parameters of the admin launcher is a file, and errors about it every run.

Jhonn
Jhonn's picture
Offline
Last seen: 1 week 9 hours ago
Joined: 2008-10-06 12:32
I have a workaround, but break CLI support

Take a look at launcher code of the latest Dev Test of Dolphin, my current workaround is using a .bat file to override the parameters...

CODYQX4
Offline
Last seen: 3 years 2 months ago
Joined: 2010-04-23 20:39
Unfortunately, that will mess

Unfortunately, that will mess up File Associations when the Platform supports those.

yunusss95
Offline
Last seen: 5 years 1 month ago
Joined: 2013-02-22 16:10
Directxportable

Hi,I needed to download direct x runtime but I couldnt due to the fact that I wasnt an admin so someone showed me this.
I have tried this but it doesnt seem to do the job can anyone help?

dboki89
Offline
Last seen: 3 years 3 months ago
Joined: 2009-11-30 20:44
Not meant for that

This was intended for use with portabilized games, where they are properly set up to use it. I don't think it will work the way you wanted.

My posts are old and likely no longer relevant.

yunusss95
Offline
Last seen: 5 years 1 month ago
Joined: 2013-02-22 16:10
I need to update to play

I need to update to play league of legends and garrys mod however it isnt working

Bennieboj
Bennieboj's picture
Offline
Last seen: 2 months 2 weeks ago
Joined: 2010-09-16 07:28
Platform + unable to download

I too would love to see this being integrated in the platform somehow.
I have a problem though: the online installer can't download any files.
Any help please?
EDIT: nvm it works, I'm stupid...

Yes, I set the working directory!

captiongomer
Offline
Last seen: 4 years 2 months ago
Joined: 2014-02-14 07:46
very happy

thanks a lot for this now i can play some of my games where ever a go Biggrin

captiongomer
Offline
Last seen: 4 years 2 months ago
Joined: 2014-02-14 07:46
help

i am very confused on how to use this can someone help me plz

Ghostkiller161
Offline
Last seen: 1 year 11 months ago
Joined: 2016-05-25 07:39
link dead

I can't download this no more, the link is dead, can you fix it plz?

J_128
J_128's picture
Offline
Last seen: 6 months 1 week ago
Joined: 2016-07-07 08:49
Broken Links

The download links are broken. Sad Can anyone fix them please?

Yes, I am a Christian. Yes, I'm proud of it. And yes, I realize that some may look down on that.

"For GOD so loved the world, that he gave his only begotten son, that whosoever believeth in him should not parish, but have eternal life."
-- John 3:16

demon.devin
demon.devin's picture
Offline
Last seen: 3 months 1 week ago
Developer
Joined: 2007-08-02 09:04
I have created two DirectX

I have created two DirectX Runtime Portable Plugins x86/x64 because the above links where dead and I just recently worked on a game which needed a plugin like this one.

DirectX Runtimes (June 2010) 32-bit Plugin:
https://www.upload.ee/files/7730916/DirectX_Runtime_Portable_Plugin_June...

DirectX Runtimes (June 2010) 64-bit Plugin:
https://www.upload.ee/files/7730915/DirectX_Runtime_Portable_Plugin_June...

I have also wrote a file which can handle the registering of these DLLs based on CODYQX4 original code above.

DirectX.nsh custom code:
https://paste.ee/p/r45v0

Hope this helps those who might still need these.

Smile

EDIT:
Changed the link to the revised custom code as the old code was broken.

daemon.devin

demon.devin
demon.devin's picture
Offline
Last seen: 3 months 1 week ago
Developer
Joined: 2007-08-02 09:04
Fixed Broken Code

https://paste.ee/p/r45v0

The above link is to the new revised custom code for handling DirectX support.

The old code was broken so please use this new code if you need DirectX support.

daemon.devin

Gord Caswell
Gord Caswell's picture
Offline
Last seen: 12 hours 1 min ago
DeveloperModerator
Joined: 2008-07-24 18:46
New thread

Please start a new thread for your build.

It's OK to link to that thread from here, however it is easier for users to find updates in their own threads rather than buried in the comments of someone else's thread.

Log in or register to post comments