How to make msi in linux? - linux

I have a msi installer created on windows, I put the msi into linux platform and I use 7z to extract content of msi installer, after that I used lcab command for extract and change some files, also using lcab command I put all files that I modified into cab. Now I need to restore msi, any idea?

You can use msi-packager.
Can be installed on Ubuntu/Debian using:
sudo apt-get install msitools nodejs npm
sudo npm install -g msi-packager
https://www.npmjs.com/package/msi-packager

Here is the full procedure to manipulate MSI files under Linux. The idea is export the MSI content to XML, modify the XML and then repack de MSI file, you can modify even the EXE files, not only tables:
Install WINE 32 bits version
Install WineTricks, you need it for DLL and frameworks installation.
Install .NET2.0, .NET4.0, MSXML6, VCRUN6 with winetricks (easy as ./winetricks dotnet20 dotnet40 msxml6 vcrun6)
Download MSI2XML & XML2MSI executables from the [official project page(https://msi2xml.sourceforge.io/)
Execute wine msi2xml installer.msi
Edit the XML file, then, pack again with wine xml2msi installer.xml
You are done, here is your MSI file!
Hope that helps, with MSI2XML & XML2MSI you can manipulate MSI files under Windows but also under Linux with WINE and it's 100% working solution.

Related

Can we build install shield - Install script / Install script MSI project to generate 64-bit setup.exe?

I want to know whether it is possible to create setup.exe (64-bit) from install shield.
I have read following things to do this, but nothing worked :
https://community.flexera.com/t5/InstallShield-Forum/64-bit-Setup-Isntallation/m-p/55761#M33183
http://www.installationdeveloper.com/2169/how-to-create-a-pure-64-bit-installation-in-installshield/
Actually I'm not able to load the 64-bit dll into 32-bit installer(using UseDLL() ), following is the reason for that, so I want to build 64-bit setup.exe, which might load my 64-bit dll.
https://community.flexera.com/t5/InstallShield-Knowledge/Can-I-Load-64-bit-DLL-Files-in-InstallScript/ta-p/3819
Thanks in advance.
UseDLL is part of InstallScript. InstallShield Installscript engine supports only 32 bit dlls as of now. So, UseDLL does not load x64 DLLs.
Install Script Project is still 32-bit(in Install Shield 2020), They are supporting MSI project as 64-bit (from Install Shield 2020). So we can not build installer as 64-bit from Installer script Project.

Missing mfc140u.dll when trying to run windows application using Wine in Ubuntu

I want to run a c++ application written in vs2017 in Ubuntu 16.04. I've installed Wine version 3.0.3 as well as Winetricks version 20140817. When trying to run the application using 'wine app_name.exe' command, i get an error saying
002e:err:module:import_dll Library mfc140u.dll (which is needed by L"path_to_my_application_library") not found
I tried to install mfc140u via Winetrichs GUI using 'Install a Windows DLL or component' option but it seems not to be listed anywhere on the list of the available packages. Does anyone know how to make it available?
Make sure you are using the most up-to-date version of Wine (currently Wine 4). You can check by running:
wine --version
If you need to upgrade Wine, check out the instructions here.
That dll is a part of Visual C++ redistributable. You'll need to install it so the application will work. Instructions are here.
I don't use Wine, so there could be additional steps, but in the interest of helping:
I believe you need the appropriate version of the VC++ redistributable (Visual Studio C++ runtime). You need to install the version that the application you try to run was compiled with. Just start with the latest one and install and then install older versions if need be. MSDN Forums.
Download
vc_redist.x64.exe
from
https://www.microsoft.com/en-us/download/details.aspx?id=48145
from console run
wine uninstaller
uninstall any existing runtime version, then select "install" and browse for the vc_redist.x64.exe file, accept. Execute your Windows appplication

how to pass property value in install shield?

I have created dummy MSI using wix and used APPDIR property with one folder path for installed location .I imported this msi in to install shield and installation got success via install shield installer but I want to change the APPDIR value through install shield installer UI . Please give me the right way to proceed in install shield .How to interact with msi in installed?
If you're calling the MSI directly from the command line it is just a matter of adding PROPERTY=VALUE on the command line after the install switches. If you're calling the InstallShield bootstrapper (setup.exe) then you'll have to wrap it in a /v switch.

How can I run .exe file on ubuntu 12.04 machine?

In my organization C developers developed one Application and given to us as a .exe format.
If any end-user send any Http request.This .exe will be run, for this I wrote the Java code(ProcessBuilder()) and deployed in Application Server(Apache Tomcat).It's working fine.These everything was done in my local system(Windows 7).
But we are using Ubuntu 12.04 as a server.Here that .exe file is not working.
How can I fix this.
You need to install wine software if you want to run a .exe file in ubuntu .
installing the wine software in ubuntu is a simple two step process.
Type the command in the terminal
sudo apt-get update
sudo apt-get install wine1.5
Once the wine is installed, you can open any .exe file using wine .
Say this , i have a file game.exe , right click - open with - wine .
You need to install wine software if you want to run a .exe file in ubuntu . installing the wine software in ubuntu is a simple two step process. Type the command in the terminal
sudo apt-get update
sudo apt-get install wine1.5 (1.5 changes with what ever number the latest edition is)
Even better go to Ubuntu software center and install thru GUI based process
Once the wine is installed, you can open any .exe file using wine . Say this , i have a file pumpai.exe , right click - open with - wine .
And Enjoy...Its Open Source..........
Pramod Pai
You basically can't execute a windows executable on Linux (but maybe try with wine).
You should ask the source code of that C application inside your organization, and port it and compile it (with gcc -Wall -g at first) on your Linux server.
I suggest you to install Linux on your local machine (or laptop) to learn it first.

How to make a simple Wine-based installer for Windows application

My Windows application runs under Wine, but the installation is a bit of a headache for laymen, and the wrappers I've seen online (PlayOnLinux, Wine Doors) require even more packages to be installed. Is there a way to make a package that will install Wine if the user needs it to be installed, install the application and shortcuts, all with minimal user hassle?
I don't believe there's any pre-made way to do this, but you could probably make a Debian package pretty easily that would depend on Wine, copy an MSI onto the machine, then run Wine's msiexec /i /q as the post-install script
Edit: Make sure to think about the uninstall case too! I.e. in the pre-uninstall script, run msiexec again as well.
You can bundle Wine -- that's what Picasa does -- or you can just make your package list Wine as a dependency; then the user's package manager will automatically install Wine for the user when they install your package.
Ideally your Linux package wouldn't run the Windows installer, but rather have all the files already unpacked.
The trick is to arrange for the files your package installs in /usr to show up in each user's .wine directory. You can look at how Picasa does this, but really the Wine community needs to document how to do this much better.
As always, ask at winehq.org if you need more info.
If you'd like to target the Mac OS, you can use WineBottler:
http://winebottler.kronenberg.org/
This project exists just for bundling Wine into a native Mac .app bundle in a way that's fairly hidden from the user.
Answer is simple:
Create Elf installer.
Pack Elf installer onto Exe installer resources.
Exe installer should unpack Elf installer on startup.
Exe installer must tries to run Elf installer after unpack (system call or some think).
If operation fail, we do normal install.
If operation didn't fail, we close Exe installer.

Resources