Installing vc++ 2013 x86 from MSI file does not work - c++

I fetched the extracted msi & cab files for the runtime installation but for some reason it does not work. It says "Gathering required information" and then just disappears. I took the arguments from the original install logs (MSIFASTINSTALL="7" NOVSUI="1") and I tested on XP and windows 7
Any ideas ?

The other alternative is to make use of merge modules to install the VC runtimes, instead of having to use a bootstrapper. Again, it depends on what you want the runtimes for. If they are required for any of the custom action dll's that make up your msi package, then bootstrapping is the only option you have. However, if they are required for your product, then a merge module can very well serve your pupose.

Windows Installer has a mutex that generally prevents one MSI from installing another MSI. You need a bootstrapper / chainer to install the packages in serial.

Related

Visual Studio 2017 Nuget Install Package Builds Project Instead of Installing / Uninstalling Packages

When importing existing library projects into an existing solution (after I copied them locally from somewhere else), when I try to install or uninstall a Nuget package through the package manager, it justs builds my solution showing me all of the errors I have because the package is not installed. It does nto try to install or uninstall the package. Why is it building my project instead of just installing / uninstalling the bloody package?
Why is it building my project instead of just installing /
uninstalling the bloody package?
It's not default behavior of VS IDE itself.
As for VS2017, if we install a normal package using Package Manager UI, VS will check the compatibility between the package to consume and the current project. If they're compatible, the package will be installed successfully, if not, VS will throw nuget error like NU1202 or others in ErrorList window.
But I'm sure for VS2017, installing/uninstalling won't call a build.
Possible causes of the issue and corresponding suggestions:
1.This behavior results from one third-party extension.
Reset all VS settings => disable all the third-party extensions => restart VS to check if the issue persists. If after the check you find this issue results from one extension, you need to make sure if the extension provides one option to turn on/off the auto-build. Or you may need to disable/uninstall the extension temporarily and contact the author of the extension to post the issue.
You may get more details for trouble-shooting from this similar issue.
2.Custom script(.ps1,.targets) from one specific nuget package causes this.
The authors can place powershell script and PackageID.targets in .nupkg when generating packages. Some of these scrips will execute when we install the package, others will execute when we uninstall the package. See similar issue here.
You can create a new simple console project TestProject in TestProject solution. Then right-click solution=>add=>Existing project to import a new external project. Now let's install the Newtonsoft.Json package to check if the issue disappears. If the issue disappears in new project with Newtonsoft.Json package. I think it indicates one special package you try to install/uninstall may cause the issue.
Hope all above helps and feel free to let me know if there's any update.

Adding binaries to other peoples conan recipes

I'm using given conan packages
gtest/1.8.0#bincrafters/stable
boost/1.66.0#conan/stable
log4cplus/2.0.2#bincrafters/stable`
and clang (version at least 6.0).
While first two packages has binaries for clang 6.0, log4cplus doesn't (last is clang 3.9). I don't like the idea that on each workstation I would need to build this package by hand.
How can I upload localy build binary with clang 6.0?
conan upload looks promising, however it suggest that it will be NEW package. Second question - wouldn't I interfere with package author in any way?
I do recommend open an issue for Bincrafters, requesting clang 3.9 support: https://github.com/bincrafters/community/issues/
Include a new package configuration is just one line in the Travis recipe.
How can I upload localy build binary with clang 6.0?
You could use JFrog Artifactory, there is a Community Edition with Conan support. Also, you could create a "mirror" for your packages locally with Artifactory, instead to download from Bintray:
https://docs.conan.io/en/latest/uploading_packages/artifactory_ce.html
However, Conan respects your remote list by it order, if your Conan client finds log4cplus first in Bincrafters' remote but the correct binary is only available in your local repository, Conan will ignore your local remote and will show a message error about missed binary package for log4cplus. Thus, in your case, you will need to copy ALL binaries to your local repository.
Regards!
You will find the conan packages installed on your Linux system at .conan/data/package_name/version/repo_name/tag. There will be a package folder inside it. If you want to manually add binaries to existing packages then you can add the binary in /bin folder in packages.
Or else you can look into the conan recipe in exports folder and look for the package, that from where it is getting its binaries from and add that binary in that path.

Qt - How to deploy application dynamically on Linux?

I have an application that I built using Qt Creator on Linux and want to deploy it now. However, I don't want to statically build it as I don't want it to be open-sourced. I tried the ldd ./YourExecutable command, however that only lists (and not add) the additional dependencies the application needs in order for it to run. My question is, how do I gather the necessary dependencies without having to individually look for these files? Is there a tool, such as windeployqt.exe on Windows, that I can use on Linux for the same purpose? Or is there a better approach than the one I'm thinking of?
Get Cygwin setup.exe: http://www.cygwin.com/
1.1. Run setup.exe and continue to package selection list.
1.2. Under Devel catagory select tools you need for compiling your source. For
example 'GNU make'.
1.3. Finish installing.
Get linux crosscompilers for cygwin:
"cygwin-gcc-linux.tar.bz2" (68.2 Mb).
md5sum: 340e91a346f5bb17e660db10e43005b8
These compilers are made with crosstool 0.28-rc37. This package contains:
gcc-3.3.4 and gcc-2.95.3 for i386 (glibc 2.1.3) and gcc-3.3.3 for amd64
(glibc 2.3.2).
Note! There is now newer version of GCC avaible with glibc 2.3.2:
"cygwin-gcc-3.3.6-glibc-2.3.2-linux.tar.bz2 (i386, x86_64)".
2.1. Copy 'cygwin-gcc-linux.tar.bz2' to 'c:\cygwin' or install directory which
you selected in setup.exe.
2.2. Open Cygwin shell and change directory to root with 'cd /'.
2.3. Uncompress to Cygwin root with command:
'tar -jxvf cygwin-gcc-linux.tar.bz2'.
Cross-compilers are installed under '/opt/crosstool'. You can use theim
directly or with commands: gcc-linux, g++-linux, gcc-linux-2.95,
g++-linux-2.95, gcc-linux-x86_64 and g++-linux-x86_64.
From: Cross-compiling on Windows for Linux
More info here.
It sounds like you want to use the shared library deployment option:
http://doc.qt.io/qt-5/linux-deployment.html#creating-the-application-package
Then if you wanted to go further than that, you could look into making a .rpm or a .deb .
There are lots of examples of qt projects that are now available on GitHub and have packages made. Usually for prebuilt binaries you need to make one for x86 and a separate one for x64.
Hope that helps.

Qt project release ubuntu - error while loading shared libraries: libQt5Widgets.so.5

I want to release my project written with Qt to a Ubuntu / Linux user. If they try to execute the build release version they get this error message, because they have not installed Qt:
error while loading shared libraries: libQt5Widgets.so.5:
cannot open shared object file: No such file or directory
Is there a way to add all the libraries such as libQt5Widgets.so.5 to the folder where the executable is, just like under Windows with qt.conf, where you can specify the Plugins folder?
Try this
sudo apt-get install libqt5widgets5
One solution could be:
export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
But a proper solution would be to install QT libraries in system and/or package your app for Ubuntu (in your case).
I had recently updated the Android tools via the SDK manager when I saw this error.
Re-install the SDK tools to fix. That is what worked for my machine.
It may be simplest to package the project using Ubuntu's package management system. The Qt dependency will then be automatically installed by the package manager when your project is installed. That'd be the best way to go about it, as long as there is a version of Qt 5 available in Ubuntu's package repository. It'll save you a whole lot of grief.

G++/GCC: how to make your app tell OS to download libs it needs into system?

So for example I am creating some app that uses boost or openCV and on my developer machine all that is installed so app compiles without any problem. But I wonder how to make app tell OS to download libs I use on first run? Is it possible? (sorry - I am linux noob)
This is what package managers are for. What you do is you compile your project, and then you build a package (e.g. .deb or .rpm), using the appropriate tools. While doing so, you can specify where the various files in your package should go, but also which other packages your package relies on. These are known as "dependencies", and package managers like apt and rpm are pretty good at resolving them.
Here's the official debian guide to making packages to give you an idea:
http://www.debian.org/doc/maint-guide/
Alternatively, you can just distribute your program as-is and list the dependencies in the install instructions; users will then have to manually install them through their package manager before running your program.