Results 1 to 15 of 15

Thread: Picclp32.ocx error with windows 7/vista

Hybrid View

  1. #1

    Thread Starter
    New Member
    Join Date
    Aug 2010
    Posts
    9

    Picclp32.ocx error with windows 7/vista

    Anyone here know how to resolve this error? In accordance with the KB article published by Microsoft, it is claimed the PICCLP32.OCX is supported by both Windows 7 and VISTA. You are instructed to distribute the OCX with your setup program, which I have been doing. I have been using the PDW for the past 10 years, and this has NEVER been an issue. Now, with 7/VISTA this OCX is failing to register. I have even instructed my customers to manually using REGSVR to correct the issue and that too does not work. They are even disabling UAC and "run as administrator" blah, blah, blah. All to no avail. Anyone here know the solution? It is really beginning to impact my revenue and trust in my product is starting to diminish. I really need some help and Microsoft is completely unresponsive on the issue. I have received nothing but canned email responses that led me here; without a real choice in the matter.

    I am using VB6 SP6. Thanks...anyone?
    Last edited by si_the_geek; Feb 10th, 2011 at 05:08 AM. Reason: removed "advertising" link

  2. #2
    Only Slightly Obsessive jemidiah's Avatar
    Join Date
    Apr 2002
    Posts
    2,431

    Re: Picclp32.ocx error with windows 7/vista

    On 64 bit Windows Vista or 7 machines, 32 bit binaries should be placed in Windows\SysWOW64 instead of Windows\system32. There are also two versions of regsvr32, one in system32 (the 64 bit version) and one in SysWOW64 (the 32 bit version). One other thing to keep in mind is that the file system redirects these locations sometimes.

    PICCLP32.OCX is apparently correctly registered on this machine (Vista, 64 bit) and resides in SysWOW64. Hopefully your issue is just using the wrong directory/regsvr32. I've never used the P&D wizard, so I can't comment on it specifically.
    The time you enjoy wasting is not wasted time.
    Bertrand Russell

    <- Remember to rate posts you find helpful.

  3. #3
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: Picclp32.ocx error with windows 7/vista

    Using a fully-patched VB6 SP6, I created a small program using the PicClip control example from the VB6 documentation.

    Tested fine, so I compiled it and created a PDW package. I copied the result to Win7 32-bit, installed it, and it ran fine. I copied it to a Vista 64-bit system, installed it, and it ran fine.


    There is something you aren't telling us here. One possibility is that you have renamed setup.exe as some other name, or you packed setup.exe, setup.lst, and your xxx.cab file into a self-extracting EXE that is not named setup.exe or something similar.

    Legacy scripted installers like PDW packages, No-no, etc. are not fully supported after Windows 5.x (Win2K, XP, etc.). You are really expected to create and deploy MSI packages instead.

    In order to let users keep on installing and using programs packaged using legacy technologies Windows will "sniff" every program upon execution and apply a set of "heuristics" to try to detect a legacy installer. One thing it looks for is certain keywords in the file name, such as "setup" or "update" and so on. If Windows detects such a pattern it will apply legacy installer appcompat shims to the execution of the setup program. Part of this (and only a part) is to run the setup program elevated.

    Some people (and some old-style installer tools) will assume that elevation is all that's required. They tell the user to "run as admin" or even try to be clever and embed an elevation manifest into the setup EXE (which can actually make things much worse, since this tells Windows the program is Vista-aware, which it most certainly is NOT). Sometimes this will work, and sometimes forcing elevation will "sort of" work - where the application might run until it tries to use certain components or something then kaboom!


    So from what I can find PDW setups for programs using the PicClip control work fine. Are you sure you didn't rename setup.exe or do anything else that might prevent Windows from recognizing your legacy installer?

  4. #4

    Thread Starter
    New Member
    Join Date
    Aug 2010
    Posts
    9

    Re: Picclp32.ocx error with windows 7/vista

    Thanks for the feedback guys. The reason this issue is difficult to overcome, is there does not seem to be any pattern to the problem. I have used the PDW for 10 years now. The package is a standard SETUP.EXE with SETUP.LST that is a self-extracting zip file that executes SETUP.EXE upon extraction. It has worked on;

    Windows 98/SE
    Windows XP/all SP levels

    In testing here I have;

    Windows VISTA
    Windows 7 Home Edition
    Windows 7 Professional

    I've sold 60,000 units of my application distributed in the same way. The only thing I am not doing is placing the OCX in the System32 folder. It is located in the application folder itself, and being referenced there by my application. So, it is working fine on some/most machines, and not on others who may/may not be running the same version of Windows 7. I've asked my customers for their Windows specs and some are running 7/Pro and it's failing, when another customer runs VISTA and it fails for them. Both versions have tested fine here.

    So I've instructed the users to run REGSVR32 to register on their machine. Even that works for some, and not for others. I have not tried to have them place the OCX in the WOW folder as you described. I'll have a few experiment there.

  5. #5
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: Picclp32.ocx error with windows 7/vista

    Quote Originally Posted by russellbdavis View Post
    The package is a standard SETUP.EXE with SETUP.LST that is a self-extracting zip file that executes SETUP.EXE upon extraction.
    That's probably your problem. What is this self-extracting EXE named? Windows needs to detect it as a legacy installer, so for example if you named it setup.exe it might work fine.

    Quote Originally Posted by russellbdavis View Post
    The only thing I am not doing is placing the OCX in the System32 folder. It is located in the application folder itself, and being referenced there by my application.
    Bad, bad, bad. Don't do this!

    PicClp32.DEP already tells you (and the PDWizard) that the intended location for deployment is in System32 - or the redirected SysWOW64 on 64-bits, which is taken care of by the OS.

    Quote Originally Posted by russellbdavis View Post
    ... So, it is working fine on some/most machines, and not on others who may/may not be running the same version of Windows 7. I've asked my customers for their Windows specs and some are running 7/Pro and it's failing, when another customer runs VISTA and it fails for them. Both versions have tested fine here.

    So I've instructed the users to run REGSVR32 to register on their machine. Even that works for some, and not for others. I have not tried to have them place the OCX in the WOW folder as you described. I'll have a few experiment there.
    Most likely the people seeing problems are using 32-bit Windows.

    However based on what you're doing with this self-extracting EXE even the ones who "seem to have it working" probably don't have it installed correctly. It might work for the user who installed it but not if another user logs on to that machine. This would be a registry virtualization issue.


    The ideal fix for all of this is to create a 32-bit MSI package. This will install properly on both 32-bit and 64-bit Windows from Win2K to current, and even on Win9x if the users have Windows Installer on their machines (which they almost certainly do if they have installed much of anything else).

    The PDW really is old tech, like all scripted installers. That's why Microsoft made Visual Studio 6 Installer 1.0 and quickly 1.1 available to VB6 developers for free back in the 1998 to 2000 timeframe as a supplement and replacement. Sadly Microsoft no longer hosts the downloads for VSI 1.1 so you'd have to dig deep into the Internet to get it now.


    PDW setups still work (via appcompat) but not if you do things that interfere with the process.

  6. #6

    Thread Starter
    New Member
    Join Date
    Aug 2010
    Posts
    9

    Re: Picclp32.ocx error with windows 7/vista

    Quote Originally Posted by dilettante View Post
    That's probably your problem. What is this self-extracting EXE named? Windows needs to detect it as a legacy installer, so for example if you named it setup.exe it might work fine.

    Bad, bad, bad. Don't do this!

    PicClp32.DEP already tells you (and the PDWizard) that the intended location for deployment is in System32 - or the redirected SysWOW64 on 64-bits, which is taken care of by the OS.

    Most likely the people seeing problems are using 32-bit Windows.

    However based on what you're doing with this self-extracting EXE even the ones who "seem to have it working" probably don't have it installed correctly. It might work for the user who installed it but not if another user logs on to that machine. This would be a registry virtualization issue.

    The ideal fix for all of this is to create a 32-bit MSI package. This will install properly on both 32-bit and 64-bit Windows from Win2K to current, and even on Win9x if the users have Windows Installer on their machines (which they almost certainly do if they have installed much of anything else).

    The PDW really is old tech, like all scripted installers. That's why Microsoft made Visual Studio 6 Installer 1.0 and quickly 1.1 available to VB6 developers for free back in the 1998 to 2000 timeframe as a supplement and replacement. Sadly Microsoft no longer hosts the downloads for VSI 1.1 so you'd have to dig deep into the Internet to get it now.

    PDW setups still work (via appcompat) but not if you do things that interfere with the process.
    The zipfile is named one thing, it extracts and then executes SETUP.EXE; which is normal. That has never been an issue in 10 years of deployment.

    Most of the reported issues are coming from 64 bit Windows 7 users. If they install under the virtual Windows XP mode, then it works just fine. I'm having one customer attempt a manual registration in the SysWOW64 folder as you described to see how it goes.

    I do have 1.0 and 1.1 VSI somewhere on CD here I think. I'll have to dig them out and take a look.

    I had been suffering from the moment VISTA/7 hit the scene with the default PDW setup failing straight out of the box pretty much across the board on every O/S. Once I studied the KB article which explained what VB6 DLLs/OCXs were shipping with Windows, and those that weren't, I streamlined my setup by eliminating the offending files from my setup. This has resulted in a much more stable install. The PICCLP32.OCX is the only system file that is giving me issue; and that is only sporadic.

  7. #7
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: Picclp32.ocx error with windows 7/vista

    The problem is, if your self-extracting EXE is not detected by Windows as a legacy installer by itself then it will not run in the "trusted installer" context in Windows 6.x and that can lead to additional trouble. Once up and running this context will be inherited when your setup.exe gets run.

    The extractor EXE itself needs to be named something like setup.exe though. Alternatively the EXE could have extended properties contaning certain keywords and it might be Ok.
    The first application compatibility technology that is part of UAC is called Installer Detection. Because most installers write binaries to the Program Files directory, they overwhelmingly need administrator privileges. Installer Detection is designed to scan the name and the resources of the EXE to determine whether an application is an installer. For example, an executable would be marked as an installer if the executable name or description contained the strings "install" or "setup". So an application named setup.exe, without an application manifest, would trigger a UAC elevation if launched by a token without administrator privileges.

    If the EXE itself runs your setup.exe after extraction by calling WinExec() or Createprocess()/CreateprocessEx() then the part of Windows that does installer dectection will not get to look it over for proper application of application compatibility shims. These shims are what make a PDW setup work in Win 6.x machines. The extractor would need to use ShellExecute()/ShellExecuteEx() in order to get the desired behavior.


    Issues like this are why Microsoft decided on XP Mode for Windows 7. Too many developers never read the information that Microsoft put out back in 2007 to get ready for Vista, and a lot of users have old applications they need to install and use anyway.

    Microsoft even had a whole separate Web site devoted to this named "Dev Readiness" from late 2006 through mid-2009.


    This might be only the tip of the compatibility iceberg for you though. You really should catch up on 10 years of changes since Win XP came out. One place to start might be Teach Your Apps To Play Nicely With Windows Vista User Account Control

  8. #8
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: Picclp32.ocx error with windows 7/vista

    A future option may be to build or hire someone to build a compatible "picclip32-like" class(es) or custom control. After all, that control is relatively easy to replicate.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  9. #9
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: Picclp32.ocx error with windows 7/vista

    The control is fine. His problem is an application deployment failure and might occur on anything he uses that isn't shipping in Windows already.

  10. #10

    Thread Starter
    New Member
    Join Date
    Aug 2010
    Posts
    9

    Re: Picclp32.ocx error with windows 7/vista

    Quote Originally Posted by dilettante View Post
    The control is fine. His problem is an application deployment failure and might occur on anything he uses that isn't shipping in Windows already.
    Well, there are a number of other controls I am shipping/deploying with my application that aren't shipping with Windows either. But they are not giving me problems, only this single OCX.

    I have thought to just eliminate the control altogether. It's only being used to create a series of images creating a turning dial when clicked upon.

    I appreciate all this feedback though. It's giving me some ideas to check out.

    But if all these issues were a problem in using the PDW, and I'm making all these mistakes as each of you claim, then I'd be experiencing way more problems than I am based upon these observations. And believe me, I have been keeping up with the IT world and where Microsoft has taken the IT community.

  11. #11
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: Picclp32.ocx error with windows 7/vista

    Some kinds of problems don't manifest themselves because the appcompat shims do a pretty good job of making legacy code run on current OSs. Sometimes things seem to work great and then you run into "works for 90&#37; of my users but 10% are having all kinds of trouble."

    "Getting it right" is a challenge. We can't always think of everything so we can't test for everything.

    But I'm reminded a little of The "Works on My Machine" Certification Program.


    Seriously though, you should be using the Microsoft Application Compatibility Toolkit. It applies whether you're using VB6, VB.Net, Visual FoxPro, Delphi, QBasic (cough, cough), or anything.

    Those tools were even produced for Windows XP, see How to Obtain the Windows Application Compatibility Toolkit even though a lot of programmers never realized their programs had hidden issues on XP too.

  12. #12

    Thread Starter
    New Member
    Join Date
    Aug 2010
    Posts
    9

    Re: Picclp32.ocx error with windows 7/vista

    Quote Originally Posted by dilettante View Post
    Some kinds of problems don't manifest themselves because the appcompat shims do a pretty good job of making legacy code run on current OSs. Sometimes things seem to work great and then you run into "works for 90&#37; of my users but 10% are having all kinds of trouble."

    "Getting it right" is a challenge. We can't always think of everything so we can't test for everything.

    But I'm reminded a little of The "Works on My Machine" Certification Program.


    Seriously though, you should be using the Microsoft Application Compatibility Toolkit. It applies whether you're using VB6, VB.Net, Visual FoxPro, Delphi, QBasic (cough, cough), or anything.

    Those tools were even produced for Windows XP, see How to Obtain the Windows Application Compatibility Toolkit even though a lot of programmers never realized their programs had hidden issues on XP too.
    After 10 years of deployment with the same application, I'm in the 99% successful range with perhaps 1% having an issue. So I'm fairly happy with that record, but it's still a nuisance. I've download the toolkit you suggested in the link. It looks to be a great tool; but for me at the present time, since I can't duplicate the problem here on any of 4 configurations I am running, will have to rely on a willing customer to use it to analyze the problem for me.

    DLL hell has morphed into something else; it hasn't simply gone away. Thanks.

  13. #13
    Only Slightly Obsessive jemidiah's Avatar
    Join Date
    Apr 2002
    Posts
    2,431

    Re: Picclp32.ocx error with windows 7/vista

    I'm curious about several things:

    1. if any of the affected systems are not 64 bit
    2. if manually SysWOW64\regsvr32'ing SysWOW64\picclp32.ocx fixes the issue
    3. if using an alternative installer like an MSI or even, say Inno Setup (commercially free), fixes the issue


    I don't mean to be non-constructively negative, but it sounds like you're relying on really old tech. Both the P&D wizard and VB6 are very old. It's unclear if VB6 programs will even run on the next version of Windows. I only bring this up to say it would probably be prudent to start conversion to newer technology, like .NET, before you're out in the cold without running software when a new version of Windows gets released.

    Best of luck.
    The time you enjoy wasting is not wasted time.
    Bertrand Russell

    <- Remember to rate posts you find helpful.

  14. #14

    Thread Starter
    New Member
    Join Date
    Aug 2010
    Posts
    9

    Re: Picclp32.ocx error with windows 7/vista

    Quote Originally Posted by jemidiah View Post
    I'm curious about several things:

    1. if any of the affected systems are not 64 bit
    2. if manually SysWOW64\regsvr32'ing SysWOW64\picclp32.ocx fixes the issue
    3. if using an alternative installer like an MSI or even, say Inno Setup (commercially free), fixes the issue


    I don't mean to be non-constructively negative, but it sounds like you're relying on really old tech. Both the P&D wizard and VB6 are very old. It's unclear if VB6 programs will even run on the next version of Windows. I only bring this up to say it would probably be prudent to start conversion to newer technology, like .NET, before you're out in the cold without running software when a new version of Windows gets released.

    Best of luck.
    I've had customers with 32 bit VISTA and 64 bit 7 have issue with it. But even one customer had 64 bit 7-PRO, it wouldn't install under anything but the virtual XP mode. He ran it, worked fine. He then tried the install under normal 64 bit on 7 PRO, and it installed just fine and then ran as it should. So, I don't know; there's no real pattern to what is happening.

    This application is more than 50,000 lines of code. According to the .NET analysis, there are over 3000+ problem areas to convert to VB.NET, with no .NET equivalent. The majority of code is graphic line work in a world coordinate system of my own design. It's heavy into trig and coordinate geometry. I do not really want to re-invent this application. I'll keep it going until it simply will not run. Thanks.

  15. #15
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: Picclp32.ocx error with windows 7/vista

    Well since 2001 when XP arrived we've also had isolated applications and registration-free COM to work with too. That ends any DLL Hell because your program works with entirely private copies of libraries that other applications never see and without registering anything. However it isn't a cure-all because a lot of 3rd party controls and such didn't adhere to the rules and don't contain complete COM type information... and they can't be properly isolated as a result.

    There are few good free tools for packaging VB6 applications that way though. One commercial offering is Side-by-Side Manifest Maker. I've never used it, sticking to my own.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width