2

It's a common problem where developer PCs have D3DX redists and VC++ redists installed, which end-user PCs may not. If you have a "clean PC" for installation testing, the moment you install then it's no longer clean.

Specifically for D3DX redists, is there a way to remove the redists so my app won't work unless it's installer properly installs required redist versions?

Mr. Boy
  • 60,845
  • 93
  • 320
  • 589
  • Every time? Sounds expensive in PCs ;) – Mr. Boy Mar 24 '14 at 09:24
  • No, you can ghost a clean PC, each time you find it not clean, you can re-image it. – zdd Mar 24 '14 at 10:29
  • Anyway, this might be a good question for http://sqa.stackexchange.com/. – TLama Mar 24 '14 at 12:18
  • Buy a new HDD. Pull out your current one. Install Windows on it. Test the tool! And then just swap wires. —— Or just buy new hardware for this. An average system, clean Windows install. Test there. But swap displays so you don't need a new monitor too. —— **But I think you exaggerate a bit, so I did too. :)** Just ship an installer with everything and, that's it. – CodeAngry Mar 24 '14 at 16:23
  • That doesn't make sense. Every time I do a major new version, I need to check it will install and run on a clean PC (I've been caught out by this before!) Ghosting (or virtual ghosting using VMs) seem the only _guaranteed_ ways. But I wondered if there is a specific way to D3DX where I can remove the redist only, to make things easier. – Mr. Boy Mar 24 '14 at 21:03

2 Answers2

5

Virtual machines. Many VMs also have a feature to create a save point of the virtual harddisk so you can quickly rollback any changes to the disk since the save point was made.

Lie Ryan
  • 62,238
  • 13
  • 100
  • 144
  • And what did we do before VMs were so prevalent? My app does a lot of 3D rendering so while modern VMs are a lot better, I still prefer a native installation to test on. – Mr. Boy Mar 24 '14 at 09:24
  • 2
    You're going to test deployment of your application, not how good is your app in performance, don't you ? So you just need to verify, if your installer contains, and is able to install everything necessary for your application to run. And that's what a VM is good for. – TLama Mar 24 '14 at 09:49
  • I don't recommend to use VM, especially for DirectX apps, see this question. http://stackoverflow.com/questions/21140926/directx9-createdevice-failed-with-d3derr-notavailable/21177015#comment31889398_21177015 – zdd Mar 24 '14 at 10:32
  • @zdd, because of why ? You said just *"en, virtual machine, this is a very good case"* without any further elaboration ? Do you have some credible reason saying that ? Do you think you can't test deployment of applications, especially those based on DirectX on VMs ? – TLama Mar 24 '14 at 10:39
  • @TLama I mean that's the good case to learn. the questioner failed to call CreateDevice and finally found the root cause was the VM. – zdd Mar 24 '14 at 10:46
1

D3DX is not a 'windows protected file' DLL, so you can just delete it with administrator rights on a test system.

This advice comes with three caveats:

  1. Ideally new apps should even be using D3DX anymore. See Living without D3DX.

  2. If you do need to use legacy components like D3DX, be sure to read Not So Direct Setup so you understand exactly what DXSETUP does and doesn't do, and you read the instructions on trimming down the CABs to just those that you need.

  3. If you are using DXSETUP, be sure to use the refreshed version and not the one that came inside the DirectX SDK (June 2010). This resolves some issues with systems that only have .NET 4.x and do not have .NET 2.0/3.x installed.

Chuck Walbourn
  • 38,259
  • 2
  • 58
  • 81