Using the Dynamsoft Service RESTful API significantly simplifies the creation of document scanning applications. However, distributing these as desktop applications can be somewhat challenging. Users are required to install both the developer's application and the Dynamsoft Service. Bundling them together in a single installation package would greatly improve the user experience. In this article, we will demonstrate how to use WiX Toolset to create a Windows installer that incorporates both the Dynamsoft Service and the document scanner application.
Downloading Dynamsoft Service for Windows
What is WiX Toolset?
The WiX Toolset is an open-source project that allows developers to create Windows installation packages from XML source code.
Installing WiX Tools in Visual Studio
- Install the HeatWave extension for VS2022 from the Visual Studio Marketplace.
- 
Open the project creation window and select WiXfrom theAll languagesdropdown to display all available WiX project templates.
Building .NET Windows Desktop Application for TWAIN Document Scanning
- Get the source code of the .NET document scanning application from GitHub.
- 
Request a free trial license and update the license key in the Form1.csfile.
 private static string licenseKey = "LICENSE-KEY";
- 
Build the application to generate the necessary files, which will be located in the bin\Release\net7.0-windowsfolder.
 dotnet build -c ReleaseThe following list enumerates all the files required for the application: 
 Twain.Wia.Sane.Scanner.dll WinFormsDocScan.deps.json WinFormsDocScan.dll WinFormsDocScan.exe WinFormsDocScan.pdb WinFormsDocScan.runtimeconfig.json
Creating an MSI Installer Package for the .NET Document Scanning Application
- 
Select the MSI Package (WiX v4)option to create a new WiX project. The structure of the project is displayed below.
- 
Open the ExampleComponents.wxsfile and add all the files associated with the document scanner application.
 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <Fragment> <ComponentGroup Id="ExampleComponents" Directory="INSTALLFOLDER"> <Component Guid="485f0a38-7e1e-4597-a68d-27e96642c12c"> <File Source="..\WinFormsDocScan\bin\Release\net7.0-windows\WinFormsDocScan.exe" KeyPath="yes"/> <File Source="..\WinFormsDocScan\bin\Release\net7.0-windows\Twain.Wia.Sane.Scanner.dll"/> <File Source="..\WinFormsDocScan\bin\Release\net7.0-windows\WinFormsDocScan.deps.json"/> <File Source="..\WinFormsDocScan\bin\Release\net7.0-windows\WinFormsDocScan.dll"/> <File Source="..\WinFormsDocScan\bin\Release\net7.0-windows\WinFormsDocScan.pdb"/> <File Source="..\WinFormsDocScan\bin\Release\net7.0-windows\WinFormsDocScan.runtimeconfig.json"/> </Component> </ComponentGroup> </Fragment> </Wix>Note: The project will fail to build if a GUID (Globally Unique Identifier) is not provided. You can generate a valid GUID using the following PowerShell command: 
 [guid]::NewGuid()
- 
When you build the project, it will generate the following files: cab1.cab,PackageDocScan.msiandPackageDocScan.wixpdb.- 
cab1.cabcontains all the files of the document scanner application.
- 
PackageDocScan.msiis the installer package.
- 
PackageDocScan.wixpdbis the project database file.
 Since we want to keep the installer package and the application files together, we need to modify the Package.wxsfile to include the application files in the installer package.
 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> <Package Name="PackageDocScan" Manufacturer="Dynamsoft" Version="1.0.0.0" UpgradeCode="d79d6f4a-f2ec-41ff-9445-b6219ae8f99a"> <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" /> <Feature Id="Main"> <ComponentGroupRef Id="ExampleComponents" /> </Feature> <Media Id="1" Cabinet="cab1.cab" EmbedCab="yes"/> </Package> </Wix>
- 
- 
Rebuild the project, and you will notice that only two files are generated: PackageDocScan.msiandPackageDocScan.wixpdb. To install the application, double-click on thePackageDocScan.msifile. The application will be installed in theC:\Program Files\Dynamsoft PackageDocScandirectory.The installation is successful, but it lacks user-friendly interaction during the process. To enhance this, we need to add a user interface to the installer package. 
- 
Open the NuGet Package Managerand install theWixToolset.UI.wixext WiXpackage for WiX.Then add the following code to the Package.wxsfile.
 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui"> ... <ui:WixUI Id="WixUI_InstallDir" InstallDirectory="INSTALLFOLDER" /> ...After rebuilding the project, you will notice that the installer package now includes a user interface, similar to what is typically seen when installing Windows applications. 
Creating a Bundle for Dynamsoft Service and .NET Document Scanner Application
Now that the MSI package is ready, we can proceed to create a Bundle (WiX v4) project that will include both the Dynamsoft Service and the document scanner application.
The Bundle.wxs file is as belows.
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
  <Bundle Name="BundleDocScan" Manufacturer="TODO Manufacturer" Version="1.0.0.0" UpgradeCode="8515efd9-92c0-4232-bd0f-a572a0ccbce5">
    <BootstrapperApplication>
      <bal:WixStandardBootstrapperApplication 
          LicenseUrl="https://www.dynamsoft.com/company/license-agreement/" 
          Theme="hyperlinkLicense" 
          LogoFile="logo.png"/>
    </BootstrapperApplication>
    <Chain>
        <MsiPackage SourceFile="..\PackageDocScan\bin\x64\Release\en-US\PackageDocScan.msi" />
        <MsiPackage SourceFile="msi\DynamsoftServiceSetup.msi" />
    </Chain>
  </Bundle>
</Wix>
It contains two MsiPackage elements. The SourceFile attribute specifies the path to the installer package, while the LogoFile attribute defines the path to the logo image.
Running the bundle's executable file will install both the Dynamsoft Service and the document scanner application.
With this setup, the .NET document scanner application can now be distributed to any Windows user for installation and use.
Source Code
https://github.com/yushulx/dotnet-twain-wia-sane-scanner/tree/main/examples/installer
 









 
    
Top comments (0)