Uninstall/Clear IE ActiveX Addon programatically (win32) - com

I'm trying to clean up the traces left by an ActiveX IE Addon. The Addon (COM DLL) was installed using a cab file.
Manually, IE -> Manage Add-ons -> open the addon and REMOVE is also not helping. It clears the addon from IE but registry traces are left behind!
Also, it throws a Runtime Error!
Program: C:\Program Files\Internet Explorer\EInstal.exe
R6034: An application has made an attempt to load the C runtime library incorrectly.
So, I presume the inf file used for installation doesn't have the info to uninstall the addon properly. Am I right? (contents in %alluserappdata%)
What happens internally when an add-on is removed from IE?
- Does it use the inf file? Or does it try to call the UnregisterServer call in the registered DLL?
Look forward to your help.

Cleared all the registry entries left behind using Registry funcions.
Couldn't find any other solution. The cab file generated did not have any information in the ini file to uninstall the Add-on.

Related

DNN 7 issue with SupportedModules attribute

I'm an experienced (ASP.NET|Java|PHP|web) developer, new to DotNetNuke.
Currently I'm following a blog tutorial to try to get an Angular module up-and-running in my local installation of DNN 7 (http://www.bitboxx.net/Blog/Post/505/DNN-module-development-with-AngularJS-Part-1#)
My environment: Windows 2012 Server R2, SQL Server 2016 Express, Visual Studio 2015 and DNN 7 on IIS 8.
DNN nuke runs fine.
I installed the downloaded module from the blog to my DNN. I'm having problems to run the HelloWorld example (at the bottom of the 2nd part of the course).
Through some trial-and-error I found out this has to do with the [SupportedModules] attribute on the controller.
Without this attribute it runs fine, but with the attribute it won't.
How does DNN determine the name of the module? The "installation" process was no more then unzipping the modules contents to the DesktopModules directory within my DNN directory (in inetput\wwwroot).
Do I need to install/configure the modules in Settings > Extensions?
Or am I missing some other point with regards to the DNN 7's security?
Thanks in advance for any help/thoughts!
Yes, you need to install the module through the Extensions mechanism in DNN. This will register the module so DNN is aware of the module as well as make sure the files get copied to the right places, in accordance with the installation manifest (the .dnn file you should find inside that .zip file)
However, looking at the blog article you referenced, I don't see an actual installation zip file anywhere. The only download I found was for the project as a whole. You would need to package your compiled solution into an installable zip file (with a .dnn manifest file) or you need to manually register your extension from the Extensions page.
On that page you should click the "Create New Extension" button which will walk you through supplying details for the module. Choose Module as the Extension Type
Only a few of the items are required. The "Name" you use for the module will be the name you use in SupportedModules. It will also default your folder name (the folder in /DesktopModules) to the module name. Friendly Name, incidentally, is what will be displayed in menus and such.
Once you've created the module it should be registered with DNN. You will probably need to restart your AppPool and website for the change to take effect.
FYI, SupportedModules isn't strictly required. If you're building this for a client and not building this for distribution.
Hope this helps.

SvcTraceViewer Tool

Where can I get the SvcTraceViewer Tool please?
I tried downloading and installing many SDKs.
I've looked in the bins of the Program Files.
I need it to trace whats going wrong with my WCF call.
You can get it by downloading the Windows SDK. The latest one can be found at https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk/, but if the link doesn't work, searching for "Download Windows SDK" should take you to the correct link.
When you install it, it may be added to the path variable. If not, you can search under the 'Microsoft SDKs' folder under 'Program Files (x86)'. For example, in my machine, it is found at C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools.
I'm on Windows 10 and this works for me:
Use a search engine on "Win 7 SDK ISO", to get a Microsoft site result, such as this one:
https://www.microsoft.com/en-us/download/details.aspx?id=8442
You may need to click into the site's 'Archives' section.
Then download the ISO, such as:
GRMSDK_EN_DVD.ISO
Right click the ISO file to Mount it to a local drive (such as your I drive), then double click this file to open it:
I:\Setup\WinSDKNetFx40Tools\cab1.cab
Scroll down to find this file in the cab:
FL_SvcTraceViewer_exe_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8
And right click to Extract it somewhere like your Documents folder.
Rename the file to SvcTraceViewer.exe and launch it.

Cannot get PDB to load. "A matching symbol file was not found in this folder."

I've got a project that debugging was working just fine about an hour ago, and now after the latest rebuild I can't get it to load the symbol files, so I cannot hit my breakpoints.
I've tried everything suggested here on Fixing “The breakpoint will not currently be hit. No symbols have been loaded for this document.” and cannot get it to load my PDB. There are a ton of questions on .PDB files not loading here on SO and I've spent the last hour going through as many of them as I can and trying everything suggested, but to no avail.
I've tried Build>Rebuild Solution, Build>Clean+ Build>Build Solution, Build>Clean + Build>Rebuild Solution, manually deleting all files from the BIN output folder + Build Solution and/or Rebuild Solution. The same thing happens in each case; the compiler creates a brand spanking new .DLL and .PDB file, yet the .PDB refuses to load at runtime.
I've even tried Debug>Windows>Modules>[Right-Click on offending symbol library]>Load Symbols and I manually browsed to the correct .PDB file, but when I hit Open it just tells me "A matching symbol file was not found in this folder".
Using Debug>Windows>Modules>[Right click...]>Load Symbol Information gives me:
C:\Windows\ssoederPDMupgrade.pdb: Cannot find or open the PDB file.
C:\VS_TestFolder\EPDMAddIns\ssoederPDMupgrade\bin\Debug\ssoederPDMupgrade.pdb:
PDB does not match image.
C:\VS_TestFolder\EPDMAddIns\ssoederPDMupgrade\obj\Debug\ssoederPDMupgrade.pdb:
PDB does not match image. C:\Windows\ssoederPDMupgrade.pdb: Cannot
find or open the PDB file.
C:\Windows\symbols\dll\ssoederPDMupgrade.pdb: Cannot find or open the
PDB file. C:\Windows\dll\ssoederPDMupgrade.pdb: Cannot find or open
the PDB file.
C:\Users\ssoeder\AppData\Local\Temp\SymbolCache\ssoederPDMupgrade.pdb\afe14027e9c6490883d12f2f139cb5911\ssoederPDMupgrade.pdb:
Cannot find or open the PDB file.
C:\Users\ssoeder\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\ssoederPDMupgrade.pdb\afe14027e9c6490883d12f2f139cb5911\ssoederPDMupgrade.pdb:
Cannot find or open the PDB file.
C:\VS_TestFolder\EPDMAddIns\ssoederPDMupgrade\obj\Debug\ssoederPDMupgrade.pdb:
PDB does not match image. SYMSRV:
C:\Users\ssoeder\AppData\Local\Temp\SymbolCache\ssoederPDMupgrade.pdb\AFE14027E9C6490883D12F2F139CB5911\ssoederPDMupgrade.pdb
not found
SYMSRV:
http://msdl.microsoft.com/download/symbols/ssoederPDMupgrade.pdb/AFE14027E9C6490883D12F2F139CB5911/ssoederPDMupgrade.pdb
not found
http://msdl.microsoft.com/download/symbols: Symbols not found on
symbol server.
Not much of an answer but...
I think something became corrupt in VS Express 2013. I have no idea how or why - and I may be totally wrong here, but the simple matter is what got my breakpoints working was installing VS Community 2015.
After installing VS Community 2015 (VSC 2015) the symbol file loads without problem, and all breakpoints are hit. This also got everything working in my existing VS Express 2013 (VSC 2013) installation, so I can work in either one now without problem.
Event timeline:
I've been working in VSE 2013 on this same project for a month or two now. Writing a class library, debugging using Debug>Attach to process.
I made some changes yesterday to code within a single class module (no other changes) and used Build>Rebuild Solution to clean and re-generate the current configuration (DEBUG) output files.
Event horizon: I went to debug using Attach to process as usual, and my break point appeared hollow with the message it would not be hit because no symbols had been loaded.
I spent quite a bit of time trying to work this out before posting here (see my original question for details on what was tried).
Received suggestion from #HansPassant regarding use of Symchk from command line. Tried to follow instructions linked to and was unable to get it working - command line didn't recognize Symchk or Symchk.exe as valid commands/processes/etc.
I downloaded WDK 8.1 update and installed.
Opened VSE 2013, received an error message regarding a driver failing to load, application froze before loading up. Actually, after trying multiple times I found it would sometimes get to the welcome screen - but remained unresponsive even then.
Went on M$ VS site to download latest copy of VSE 2013 installation files to do a repair-install, and I noticed there was a newer version: VSC 2015.
Downloaded and installed VSC 2015.
Opened project, started debugging by using Debug>Attach to process and it worked - all symbols loaded and my breakpoints worked. NOTE: I changed nothing with the project * - just opened it and ran.
* unless some changes are made by the IDE unbeknownst to me just by opening the project.
This seemed to repair whatever driver was corrupted in the VS2013 install as well, as I went back to VSE 2013 and it opened without error AND I was able to open the same project and do Attach to process and all symbols loaded and breakpoints are working again.
I had the same problem with VS2013 Ultimate. I did a clean and build of the assembly several times, and I deleted all temporary files from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files.
I also verified that in "Debug -> Options and Settings -> Symbols", there were no modules excluded... in the end, I found a reference that was different from that deployed into the GAC.
I'm glad you got it to work CBRF23! I had this problem when trying to compile a DirectX effect file in DevC++. The easiest way I found of downloading pdbs is to first download WinDBG here:
http://go.microsoft.com/fwlink/p/?LinkId=536682
Then as an example, say you want to download d3dx9d.pdb. copy d3dx9d.dll from C:\windows\system32 and paste another copy into your (debugger) windbg symchk.exe folder, then connect to your internet server, go to the windows start menu, Run: [then type] cmd [press enter], next go to the windbg debugger folder by going to the Command Prompt (MS-DOS Window)
(if it's in the C:\windbg_6p12p0002p633\debugger_x86 folder for example, then type):
cd windbg_6p12p0002p633[enter]
cd debugger_x86
[and finally type the following but change the double asterisk** to one asterisk *:]
symchk /if d3dx9d.dll srv**c:\symbols*\mainserver\symbols*https://msdl.microsoft.com/download/symbols
Please note again, that there is only supposed to be one asterisk after srv (the post would interpret an asterisk as italic or bold), not two then it will open symchk.exe and download the pdb symbol file associated with the inputted dll into the created C:\symbols\ folder automatically!
Did you try these steps?
1- delete the .SUO file
2- make a CLEAN BUILD.
3- make a BUILD PROJECT

I need to change the path and use the newly changed path

We are using a really old Intel math library (nsp.dll and family) and it's location must be specified in the Windows PATH variable. Previously we installed these dll's in the Windows/System32 folder so everything was fine. Now we would like to install these dll's in another folder, the reason is we are migrating to Windows 7 and do not want to place dll's in the System32 folder. I found the SO answer as to how to change the PATH variable (thanks for that) and that does work. After installing I checked the PATH and our folder was NOT added to the PATH, I check the reg key and our folder WAS added. But....it appears that when we register our OCX that uses those dll's, the path is not changed yet. When I rebooted the PATH has our added path.
So, it seems I'm in a catch-22, I need to change the PATH and also use the new PATH during the install. Do I need to require a reboot and some how register that OCX after the reboot? Or is there another way?
After the reboot, running cmd as Administrator allowed me to register the OCX in the new folder. But I would like to have the installer do this automatically.
Thanks.
Make sure that you have the following setting in your script:
[Setup]
ChangesEnvironment=yes
This will allow the PATH change to take effect without a reboot.
However it will only affect new processes started by the shell. If you have an existing cmd window, or you try to start the application at the end of the install without using the shellexec flag, it will still see the old PATH.
And double-however: you cannot legally change the path where a COM DLL or OCX file is installed and registered. These must without exception be installed in the location specified by the vendor. Hence you must continue to install it in {sys} anyway. (At least if you're still using system-wide registration. There is an alternative that does let you move it, if you look up "registration-free COM", but it comes with a lot of caveats and is seldom worth the effort.)
Also note that "because Windows 7" is not a valid reason to move something anyway.

Wix Bootstrapper - DownloadUrl - Can it be a local network path?

I want to have my exePackage saved on a network path and for the bootrapper to "download" it from this place if needed.
I cannot get the bootstapper to work with the path. My log says failed to connect to ....
I have tried may different things with the / or \ and with "file" at the beginning. But I cannot seem to get it right. Firefox, Internet Explorer and file explorer all have no problem with this format, however wix will change it in the log. The log show "file://servname..."
DownloadUrl="file://///servname/foldername1/foldername2/folder%20withaspace/myEXE.exe"
What should it be?
EDIT: One work around would be to use the Source attribute and have it pointing to the network path. But my development pc with Visual Studio (M$ version) does not have access to this network share so I cannot use the Name or Source of the exePackage to refer to this file.
Burn supports downloading from BITS, FTP, HTTP, and HTTPS. It doesn't support SMB shares.