Custom actions ignored while generating UWP app release using Installshield 2016

255 views Asked by At

I have created a Basic MSI project using InstallShield 2014 to generate MSI release packages for my desktop application. I am using Installscript rule files as custom actions to install dependency libraries & driver packages for my desktop app and it is working fine in MSI build as expected.

Now I want to generate UWP app releases to install the same application in Windows 10 S machines from Windows Store. So I have downloaded & installed a trial version of Installshield 2016 professional edition which will support us to generate UWP app packages from existing MSI project - http://learn.flexerasoftware.com/IS-WBNR-InstallShield-2016-Whats-New.

I have followed these steps to generate UWP app from my existing Basic MSI project - https://www.youtube.com/watch?v=0K5XTJ2aV6o. UWP app release package (.appx) generated successfully and installed in Windows 10 machine. But it ignored my custom action scripts and it is not installed any dependency libraries and drivers. I am getting installation success message but actually, it installed nothing.

I have noticed the build logs and found the following warning messages. Looks like my custom scripts ignored in UWP app package. Do we need to change any settings to make it accept my custom actions?

ISDEV: warning -9018: Custom action 'ISLockPermissionsCost' will be ignored
ISDEV: warning -9018: Custom action 'ISLockPermissionsInstall' will be ignored
ISDEV: warning -9018: Custom action 'MY_OLD_APP_REMOVAL' will be ignored
ISDEV: warning -9018: Custom action 'MY_DRIVERS_INSTALLATION' will be ignored
ISDEV: warning -9018: Custom action 'MY_DRIVERS_UNINSTALLER' will be ignored
ISDEV: warning -9018: Custom action 'MY_CONFIG_FILE' will be ignored
ISDEV: warning -9018: Custom action 'MY_SET_DEFAULT_OPTIONS' will be ignored

Please provide me the way to resolve this problem.

1

There are 1 answers

0
Michael Urman On

Your expectations of what the can be done in a UWP app package are incorrect. Start by reading up some of the limitations documented at Prepare to package an app where, among other things, it lists the following unsupported scenario:

  • Your app requires a kernel-mode driver or a Windows service. The bridge is suitable for an app, but it does not support a kernel-mode driver or a Windows service that needs to run under a system account. Instead of a Windows service, use a background task.

and

  • Your app uses a dependency in the System32/SysWOW64 folder. To get these DLLs to work, you must include them in the virtual file system portion of your Windows app package. This ensures that the app behaves as if the DLLs were installed in the System32/SysWOW64 folder. In the root of the package, create a folder called VFS. Inside that folder create a SystemX64 and SystemX86 folder. Then, place the 32-bit version of your DLL in the SystemX86 folder, and place the 64-bit version in the SystemX64 folder.

While the latter can be worked around as described (by properly installing it, rather than using a custom action to do so -- no, there's no way to get the build to process custom actions), the driver must be installed onto the machine itself. You can choose to create a UWP app package for the rest of it (and can install both as part of a Suite project if you so desire). But due to the dependency on the driver, such an app is unlikely to be suitable for the store.