5.28 MSI Installer Fails Immediately

Hello, all! I’m trying to install 5.28 on a Windows 2019 EC2 instance and the install fails immediately upon start giving no more information than:

ActivePerl-5.28 Setup Wizard ended prematurely

ActivePerl-5.28 Setup Wizard ended prematurely because of an error. Your system has not been modified. To install this program at a later time run the Setup Wizard again.

No other information is given. It happens every time I run the wizard.

Has anyone else encountered this error? Any advice?

TIA,

VtR

Hi @Vann-the-Red ,
Thanks for posting ! The team shall advise accordingly.
Regards

As an update, I’m attempting to install on a heavily STIGed AMI. I just verified it installs cleanly on a plain Windows 2019 image. I’m working to see what STIG is blocking the install.

Regards,

VtR

1 Like

Hi @Vann-the-Red

Any luck seeing what’s causing the issue?

Cheers!
–zak

I met the same question, and trying to overcome that but failed.

how to fill this quest

Hi @PSX,

Can you share more details on the exact issue you are encountering?

Is it the same as @Vann-the-Red? eg. Perl 5.28 on WIndows 2019 EC2 with a STIG-compliant AMI?

Cheers!
–zak

I too get this exact issue as reported by @Vann-the-Red for me it’s while trying to re-install Perl 5.28 on Windows 10 Pro. I’ve even removed the ActiveState node from the registry in an attempt to resolve this but no joy, meaning I now can’t build my OpenSSL.


Bill

I’m still having the same issue. Working on relaxing stigs to get it to lay down, but that’s a needle-in-a-haystack approach. Is it possible to install without the msi? For example, is it possible to unzip the necessary files and set the appropriate environment variables?

Thanks,

VtR

The MSI effectively is just running using the state tool to run state deploy under the hood. You could try running that directly to see if it gives you more actionable error messages.

Another option would be to use our virtual environment mechanic through state activate.

You could also run the MSI again with logging turned on: How do I create an installation log?

Please let us know how these suggestions work out for you so we can help you further or possibly address the core issue for future users. Thank you!

1 Like

Mixed results, nathanr. First, thank you so much for providing me with avenues of attack! I was not able to follow the state tool installation procedures as the server has no web connectivity. Is there somewhere to download the file referenced here:

powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1')))"

So it is local?

On the other hand, the msi logging tip worked perfectly and I was able to provide that to the system administrator who applied the STIGs in hopes of running down the culprit.

Regards,

VtR

1 Like

The full error is as follows:

sending MSI start - event
Sending GA Event
Exception thrown by custom action:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
at System.Security.Cryptography.MD5CryptoServiceProvider…ctor()
— End of inner exception stack trace —
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at System.Security.Cryptography.CryptoConfig.CreateFromName(String name, Object args)
at System.Security.Cryptography.MD5.Create()
at ActiveState.TrackerSingleton.GACustomDimensions.computeSessionID(String cid, String msiLogFileName)
at ActiveState.TrackerSingleton.GACustomDimensions…ctor(Session session, String cid)
at ActiveState.TrackerSingleton.TrackEventSynchronously(Session session, String category, String action, String label, Int64 value)
at StateDeploy.CustomActions.reportStartEvent(Session session, String uiLevel)
at StateDeploy.CustomActions.GAReportStart(Session session)
— End of inner exception stack trace —
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object parameters, Object arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(Int32 sessionHandle, String entryPoint, IntPtr remotingDelegatePtr) CustomAction GAReportStart returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) Action ended 20:57:17: GAReportStart. Return value 3.
MSI (c) (84:78) [20:57:17:122]: Doing action: CustomOnError MSI (c) (84:78) [20:57:17:122]: Note: 1: 2205 2: 3: ActionText Action 20:57:17: CustomOnError.
Action start 20:57:17: CustomOnError.
MSI (c) (84:24) [20:57:17:138]: Invoking remote custom action. DLL: C:\Users\ADMINI~1\AppData\Local\Temp\MSI24B8.tmp, Entrypoint: CustomOnError
SFXCA: Extracting custom action to temporary directory: C:\Users\ADMINI~1\AppData\Local\Temp\MSI24B8.tmp-
SFXCA: Binding to CLR version v4.0.30319 Calling custom action StateDeploy!StateDeploy.CustomActions.CustomOnError
Begin SetError
errorType=, error_message=
MSI (c) (84!2C) [20:57:17:779]: PROPERTY CHANGE: Deleting ERROR property. Its current value is ‘none’.
MSI (c) (84!2C) [20:57:17:779]: PROPERTY CHANGE: Deleting ERROR_MESSAGE property. Its current value is ‘none’.
Default error type
MSI (c) (84!2C) [20:57:17:794]: Doing action: GAReportFailure MSI (c) (84!2C) [20:57:17:794]: Note: 1: 2205 2: 3: ActionText Action 20:57:17: GAReportFailure.
Action start 20:57:17: GAReportFailure.
MSI (c) (84:78) [20:57:17:794]: Invoking remote custom action. DLL: C:\Users\ADMINI~1\AppData\Local\Temp\MSI2759.tmp, Entrypoint: GAReportFailure
SFXCA: Extracting custom action to temporary directory: C:\Users\ADMINI~1\AppData\Local\Temp\MSI2759.tmp-
SFXCA: Binding to CLR version v4.0.30319 Calling custom action StateDeploy!StateDeploy.CustomActions.GAReportFailure
sending event about MSI failure
Sending GA Event
Exception thrown by custom action:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
at System.Security.Cryptography.MD5CryptoServiceProvider…ctor()
— End of inner exception stack trace —
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at System.Security.Cryptography.CryptoConfig.CreateFromName(String name, Object args)
at System.Security.Cryptography.MD5.Create()
at ActiveState.TrackerSingleton.GACustomDimensions.computeSessionID(String cid, String msiLogFileName)
at ActiveState.TrackerSingleton.GACustomDimensions…ctor(Session session, String cid)
at ActiveState.TrackerSingleton.TrackEventSynchronously(Session session, String category, String action, String label, Int64 value)
at StateDeploy.CustomActions.GAReportFailure(Session session)
— End of inner exception stack trace —
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object parameters, Object arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(Int32 sessionHandle, String entryPoint, IntPtr remotingDelegatePtr) CustomAction GAReportFailure returned actual error code 1603 but will be translated to success due to continue marking Action ended 20:57:18: GAReportFailure. Return value 1.
MSI (c) (84!2C) [20:57:18:466]: Doing action: CustomFatalError MSI (c) (84!2C) [20:57:18:466]: Note: 1: 2205 2: 3: ActionText Action 20:57:18: CustomFatalError.
Action start 20:57:18: CustomFatalError.
Action 20:57:18: CustomFatalError. Dialog created MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: _RemoveFilePath MSI (c) (84:60) [20:57:18:497]: PROPERTY CHANGE: Modifying CostingComplete property. Its current value is ‘0’. Its new value: ‘1’.
MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: BindImage MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: ProgId MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: PublishComponent MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: SelfReg MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: Extension MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: Font MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: Shortcut MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: Class MSI (c) (84:60) [20:57:18:497]: Note: 1: 2205 2: 3: TypeLib MSI (c) (84:60) [20:57:18:497]: Note: 1: 2727 2:
Action ended 20:57:23: CustomFatalError. Return value 1.
Action ended 20:57:23: CustomOnError. Return value 1.
Action ended 20:57:23: INSTALL. Return value 3.
MSI (c) (84:78) [20:57:23:294]: Destroying RemoteAPI object.
MSI (c) (84:00) [20:57:23:294]: Custom Action Manager thread ending.

1 Like

No, what this does is download the state tool, which will in turn download all the assets required for your runtime (ActivePerl 5.28) to operate. It requires a connection to the activestate platform as well as the AWS s3 buckets we use.

It sounds like this is the problem that needs solving. Currently we do not provide an offline installer. In theory do the installation on one machine and copy the files over to another as long as the installation path remains the same, though that’s not exactly a supported use-case for us.

Looking at your MSI log I’m seeing this error:

Which might be a red herring because you said you have no network connection. So the fact that we verify a downloaded file with md5 should be irrelevant since there wouldn’t be a file to verify. I imagine it’s just complaining about the use of the md5 library, but in case it’s not that you could try toggling that setting.

I will file an internal ticket for us to look into using a solution that’s FIPS compliant.

Nathan,

I think that may solve it. I can install it on an identical EC2 without the STIGs, zip the install directory, and place that on the STIGed EC2. What I need are the list of other changes the MSI makes. For example, I’d imagine there are environment variable changes. Is there or could there be a list of those so we could use this install path?

I’m currently looking at replacing Active State with Strawberry as they provide a zip with manual scripts that might do the trick. I’d prefer not to, though, since we’ve used AS perl for years in our on-prem deployment.

Regards,

VtR

I believe it is only setting the PATH variable and it sets the PERL5LIB to empty to avoid conflicts with any other potential Perl installations on the machine. You can skip that if this is your only Perl install though, which I imagine it would be if you’re using EC2.

Note offline installs are definitely a thing we’re aiming to support with our platform, it just hasn’t arrived yet.

1 Like

Excellent, Nathan. I will proceed along that path. If possible, are you able to confirm that the path variable is the only other thing that needs to be set?

Regards,

VtR

I believe those are the only variables that matter, but I could be wrong. Note when you state activate you can insect the environment variables by running set, which should allow you to copy over the values.

Keep in mind though that you’re entering unsupported territory.

2 Likes

I will check and report back. We may have a solution.

1 Like