Building Installer with Digital Signature Leads to File Not Found Error

Updated Nov 20, 2023

Reported In

Software

  • LabVIEW
  • LabVIEW Application Builder Module

Issue Details

When building an installer with the LabVIEW Application Builder using a Windows Security certificate I get the following error message and the build aborts as unsuccessful:

CodeSignAPI.lvlib:Get Signing Error String.vi<ERR>
Error: The file to sign could not be found on the path specified.

<b>Complete call chain:</b>
CodeSignAPI.lvlib:Get Signing Error String.vi
CodeSignAPI.lvlib:Sign with Certificate.vi
IB_MSI.lvclass:Sign_Setup.vi
IB_MSI.lvclass:Build.vi
CDK_Engine_Main.vi
CDK_Build_Invoke.vi
CDK_Build_Invoke.vi.ProxyCaller


Solution

This is a known issue when building Installers using the [ProductVersion] tag in the Installation destination dialog box under Product Information in the build specification. Remove the [ProductVersion] tag to prevent this from occurring:


If removing [ProductVersion] doesn't solve the issue, the installers can be signed externally using SignTool included with Windows SDK by taking the following steps:
 

1. Ensure you have the appropriate trusted Certificate and .pfx (personal exchange format) file:

a. You can use the Pvk2Pfx command line function to create the .pfx file from your .cer (certificate) and .pvk (private key) files.
b. Open a command prompt as administrator and use Certutil to trust your certificate:

Certutil -addStore TrustedPeople MyKey.cer 

2. Build the installer in LabVIEW Application Builder without selecting Apply digital signature.
3. Open a command prompt as administrator.
4. Navigate to the SignTool directory using the cd command. For example:

cd C:\Program Files (x86)\Windows Kits\10\bin\x86 

5. Use the SignTool to sign your installer executable:

signtool sign /f <cert.pfx> /p <password> “<installer.exe>” 

a. <cert.pfx> is the full path to your .pfx file.
b. <password> is the password for your .pfx file (if unspecified, default is the password for the .pvk file).
c. <installer.exe> is the full path to the installer.exe.


Once completed, your installer should be signed using the specified certificate.

Additional Information

This behaviour was fixed in LabVIEW 2019 and you can use the [ProductVersion] tag there together with the digital signature.