Install driver using InstallShield - installshield

I need to create an InstallShield 12 project that installs a driver on WinXP or higher. How can I do it using InstallShield 12?

What we usually do is write a DLL (in C or C++) which uses SetupAPI calls (SetupDiXXX and UpdateDriverForPlugAndPlayDevices) to do all the installation work.
And then, have the installer script(IS, Inno, Wise) make calls into this DLL.

In 2012 Spring Pro (I can't speak to earlier versions), you can simply create a new feature with the desired components (note: use one component for the 64-bit side, and another component for the 32-bit side, both under the same feature). For each of the driver components, go into the Advanced Settings section in the tree view control under the component, then into the Device Driver settings, and on the Common tab, check the "This component includes a device driver" box. Under Runtime Options using DIFx 2.10, set any desired configuration bits, like "Always overwrite any existing device driver", and then at the bottom of the Common tab, be sure to set the appropriate architecture/bittage. Then just let it install -- InstallShield plus DIFx 2.10 take care of everything automagically.
At least, this worked just fine with our custom, signed, WinUSB-based driver. It was a lot harder figuring this out then actually doing it.

I simple way is to wrap dpinst
Use the command line flags to suppress a gui and read the return code to figure out if the install worked correctly

Related

MPS-based IDE: what are the best practices for embedding JRE/JDK?

MPS enables me to build standalone IDEs (see https://confluence.jetbrains.com/display/MPSD34/Building+standalone+IDEs+for+your+languages), however Windows builds would definitely need a JDK/JRE. The users get confused with installing Java, etc.
Are there "pre-built" JDKs compatible with MPS (IntelliJ platform)?
What are the approaches to update the bundled Java? IntelliJ platform does have an updater, however does it support updating the Java runtime? The updater is Java-based, so I wonder how does it update Java runtime when using the same runtime.
Can something like JetBrains Toolbox to manage updates of the "third-party" MPS-based IDEs?
PS. I'm using for MPS 2017.3, mbeddr if that matters.
I'm not exactly sure if the are publicly available but you can check JBs teamcity at teamcity.jetbrain.com where all their open source stuff is available.
The updater for intellij performs incremental updates to the jar files. It is not open source and it usually only used to do small updates. If there is a major update like new platform with a bunch of API updates it is not used and the user has to download complete new installer. In MPS the incremental updater is not used. So each MPS updates is complete new IDE to be downloaded by the end user (or JB toolbox).
I don't know how the JB toolbox works but you can use MPS/IntelliJs normal update mechanics to notify users about updates to your custom IDE. In the branding you create for your custom IDE there is field where you can point it to a update location. Which then serves a xml file with the update information. The format is pretty straight forward. Here is a sample. Your IDE will check on start up or at least once a day if an update is available.

Why Android Studio create by default a project based on 'appcompat' library

I decided lately to move from Eclipse ADT to the latest AS version.
The first weird thing that I've noticed is that when I create a new project, it is always based on the Android support library even though I selected the minimum SDK to be level 19.
What is the reason for that?
Is there a way to configure it otherwise?
The reason for this is mainly backward compatibility. Right now, you may want to make your app for API19+, but later you may decide to lower it a bit down to support more devices, and you shouldn't be having problems with that, if you use support library.
There's also the thing that support library gets updated much more often than Android core library, therefore, if you base your project on it, it should be pretty much bug free.
One more thing, if you extend activity compat for example, the activity checks what version of Android you are currently having on your device and uses core features automatically if available, so it's good for you in many ways to use support library :)

how to display embedded manifest

I have some projects built with different versions of VS2005 that require different run-time version. i need to display the assemblyIdentity to see which run-time is required to run the program. I need the information to include the specific VC80 runtime MSM in my WiX installer project.
{Edit}
While the binaries have been built with Visual Studio I don't have a VS on the PCs where WiX shall be used. I am reluctant to install an Express version, since I am a guest on that PC.
{/Edit}
How can I conviniently display the embedded manifest? Preferrable with a small tool, command line tool would be OK.
Manifests are stored as resource in executables/DLLs. These are stored under RT_MANIFESTresource type. Open the resources under it and parse it as XML.
One example is pasted below (I opened one of my EXE using VS resource editor):
The PeStudio is a small tool that does the job. Including displaying the manifest in clear text.
Additionally it displays all DLLs that must be present on target system. That helps to author the installer.

CDC-1.0/Foundation-1.0,J2SE-1.3

How to setup/configure the environment "CDC-1.0/Foundation-1.0,J2SE-1.3" of an OS (for example windows XP, linux)?
Because I want to run the embedded AWT application which requires this environment.
one possibility is to install an IDE which contains all that. the one which seems the most appropriate to me is NetBeans. go and see on their site, there are some tutorials on installation, setup and project creation
note that there may be other IDEs to perform the same task, i am just not aware of them.

How do I know if my program needs MDAC?

I have a set of Windows programs that is mostly created with VB6 and VC++ 6. Its installer is created using InstallShield.
A couple users have recently reported a problem trying to install it on Vista. It is complaining that "MDAC 2.6 Sp2 cannot be installed on this machine. MDAC 2.6 Sp2 requires any one of the following configurations", and then lists several OSes, Vista not among them.
A little googling shows that there's a bug in InstallShield's handling of MDAC - it shouldn't be checking for it on Vista, because there is no such thing as MDAC on Vista (there's a new thing - "Windows DAC").
I could make the change to my InstallShield project suggested on that page, but I am concerned about doing so, because I have no way to test it (this problem does not occur on all Vista machines, and I haven't been able to make it happen on any Vista machine I have access to).
However, after looking at Wikipedia's page on MDAC, I can't imagine why we would need it for our programs in the first place. We're not using any databases, at least not explictly (maybe some Microsoft component that we're using is using it, though?).
I was not the original author of the InstallShield project. I am beginning to suspect that MDAC might have been inadvertantly added to it, or perhaps advertantly but just as "uhhh, maybe we need that".
How can I explicitly tell whether my programs need MDAC or not? I can look at the references and such in the VB6 and VC++ projects; is there any way to tell from those whether I can safely remove MDAC from the InstallShield project? For example, perhaps there's a single MDAC reference which, if not present in my VB/VC++ projects, means that my programs definitely do not require MDAC?
Thanks in advance for any help.
I expect you are right, MDAC was probably included with the original InstallShield project configuration, and nobody has bothered to remove it.
On the VB6 side you should be able to tell if MDAC is being used by going into the "References" dialog (I think its in the Projects dropdown menu of the ide) and checking to see if there is anything in there to do with MDAC or MSAccess. I haven't worked with VB6 in a while, but the text should look something like "Microsoft ActiveX Data Objects 2.x Library".
I'm guessing it is less likely that it is being used On the C++ side, but you could try searching for keywords like msdado, mdac and msaccess to see if theres any sign of a #import on one of the mdac dlls.
When deploying to Windows XP and later there is no reason to include MDAC or Jet 4.0, since even XP RTM (gold) shipped with MDAC 2.7 as well as Jet 4.0.
Microsoft Data Access Components (MDAC) release history
How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine goes into more recent Jet history.
MDAC releases include compatibility typelibs for ADO, so even if your program was compiled against MDAC 2.6 it will actually use the latest ADO on a target machine. The real grief can come if the program early-binds to ADOX.
ADOX never shipped with appropriate compatibility interfaces, so programs should almost always use late binding with ADOX.
DAO is another issue, but (a.) nobody should really be using it anymore without a good excuse and (b.) it died at DAO 3.6 so there should be no compatibility issue as long as your programs were upgraded to 3.6 and Jet5x (Jet 4.0, Access 2000 format).
The story gets more complicated when deploying downlevel from XP of course.
Beginning I think with Windows XP Microsoft began including MDAC. However, in MDAC version 2.6 and later they no longer included the Jet 4.0 components. (Jet 4.0 SP8 can be found here)
If you are using Visual Fox Pro you need to install either the ODBC or OLEDB drivers depending on you code for that.
ODBC
OLEDB
All of these downloads depend on having at least MDAC 2.6 installed.

Resources