Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ezfit:5x:private_label_customization [2015/09/04 09:32]
smayr
ezfit:5x:private_label_customization [2015/10/02 12:24] (current)
smayr [Add Custom Company]
Line 1: Line 1:
 = Customization = = Customization =
 == Private Label == == Private Label ==
-  * Get private label information: +=== Get private label information === 
-    * Company Name. +  * Company Name. 
-    * Address. +  * Address. 
-    * Phone number, Email, Fax, Website. +  * Phone number, Email, Fax, Website. 
-    * Logo (PNG or JPG format).  Place logo image file in ''<src>/ezFIT/images/custom/logos'' folder.   +  * Logo (PNG or JPG format).  Place logo image file in ''<src>/ezFIT/images/custom/logos'' folder.   
-    * Product Names +  * Product Names 
-  Add image files to ezFIT project in MS Visual Studio: + 
-    * ''<src>/ezFIT/images/custom/icons/icon-acme.ico'' +=== Company and App Logo === 
-    * ''<src>/ezFIT/images/custom/logos/logo-acme.png'' +Add image files to ezFIT project in MS Visual Studio: 
-    * ''<src>/ezFIT/images/custom/logos/ezfit-logo-acme.png'' +  * ''<src>/ezFIT/images/custom/icons/icon-acme.ico'' 
-    * ''<src>/ezFIT/images/custom/splash/splash-acme.png'' +  * ''<src>/ezFIT/images/custom/logos/logo-acme.png'' 
-  Add Custom Company: +  * ''<src>/ezFIT/images/custom/logos/ezfit-logo-acme.png'' 
-    * Edit ''Types.cs'' in ''AHI.App.Types'' assembly. Add new company to ''TCustomCompany'' enum. Eg: ''Acme = 99'' +  * ''<src>/ezFIT/images/custom/splash/splash-acme.png'' 
-    * Edit ''AppCustomization.cs'' in ''AHI.App.Customization'' assembly. Add a new company in ''TCompanyInfoList.CreateDefaultList()''. Eg: <code csharp>#region Company Acme Inc+ 
 +=== Add Custom Company === 
 +  * Edit ''Types.cs'' in ''AHI.App.Types'' assembly. Add new company to ''TCustomCompany'' enum. Eg: ''Acme = 99'' 
 +  * Edit ''AppCustomization.cs'' in ''AHI.App.Customization'' assembly. Add a new company in ''TCompanyInfoList.CreateDefaultList()''. Eg: <code csharp>#region Company Acme Inc
   aCompany                = new TCompanyInfo();   aCompany                = new TCompanyInfo();
   aCompany.Code           = TCustomCompany.Acme;   aCompany.Code           = TCustomCompany.Acme;
Line 27: Line 30:
   this.Add(aCompany);   this.Add(aCompany);
 #endregion</code>  #endregion</code> 
-    * Edit ''AppCustomization.cs'' in ''AHI.App.Customization'' assembly. Add a new company in ''TCompanyAppInfoList.CreateDefaultList()''. Eg: <code csharp>#region Company Acme Inc +  * Edit ''AppCustomization.cs'' in ''AHI.App.Customization'' assembly. Add a new company in ''TCompanyAppInfoList.CreateDefaultList()''. Eg: <code csharp>#region Company Acme Inc 
-  aCompany                = new TCompanyAppInfo();+  aCompany                            = new TCompanyAppInfo();
   aCompany.CompanyInfo.Code           = TCustomCompany.Acme;   aCompany.CompanyInfo.Code           = TCustomCompany.Acme;
   aCompany.CompanyInfo.ManufacturerID = TManufacturerID.Audina;  // Audina manufacturer is used for Private Label   aCompany.CompanyInfo.ManufacturerID = TManufacturerID.Audina;  // Audina manufacturer is used for Private Label
Line 41: Line 44:
   this.Add(aCompany);   this.Add(aCompany);
 #endregion</code> #endregion</code>
-  * Add Supported Products and their names. +  * Edit ''AppCustomization.cs'' in ''AHI.App.Customization'' assembly. Add a new company and software in ''TAppCustomization.SetAppInfo()''. Eg: <code csharp>... 
-    * Edit file ''ProductSpecs.cs'' in ''AHI.Products.Specifications'' assembly. +switch(_Company.Code) 
-    * Set product name in ''TProductSpecificationList.RefreshList()'', under specified company for the required product. +
-    * <code>#region Product BTE 675DP++    case TCustomCompany.Auditiva: _Application.AppName = "fitPRO";  break; 
 +    case TCustomCompany.Acme:     _Application.AppName = "AcmeEzFITApp"; break; 
 +    ... 
 +    default: _Application.AppName = "ezFIT"; break; 
 +
 +... 
 +#endregion</code> 
 +  * Edit ''AppCustomizationTest.cs'' in ''AHI.App.Customization'' assembly. Add a test cases handling new company and software. 
 + 
 +=== Add Supported Products and their names === 
 +  * Edit file ''ProductSpecs.cs'' in ''AHI.Products.Specifications'' assembly. 
 +  * Set product name in ''TProductSpecificationList.RefreshList()'', under specified company for the required product. 
 +  * <code>#region Product BTE 675DP+
   _prod = new TProductSpecification();   _prod = new TProductSpecification();
   . . .   . . .
Line 53: Line 68:
   . . .   . . .
 #endregion</code> #endregion</code>
-  * Add Supported Housings. + 
-    * Edit file ''HousingSpecs.cs'' in ''AHI.Products.Specifications'' assembly. +=== Add Supported Housings === 
-    * Under each housing in ''THousingSpecificationList.RefreshList()'', specify the ''IsVisible'' property for the specified company. +  * Edit file ''HousingSpecs.cs'' in ''AHI.Products.Specifications'' assembly. 
-    * <code>#region Housing: BTE_Classic+  * Under each housing in ''THousingSpecificationList.RefreshList()'', specify the ''IsVisible'' property for the specified company. 
 +  * <code>#region Housing: BTE_Classic
   _Housing= new THousingSpecification();   _Housing= new THousingSpecification();
   . . .   . . .
Line 65: Line 81:
 #endregion</code> #endregion</code>
  
 +=== Custom Splash and Icon Images ===
   * Add Splash and Icon image resources to ''AHI.App.Logo'' assembly.    * Add Splash and Icon image resources to ''AHI.App.Logo'' assembly. 
-    * Add Splash (BMP) and icons (ICO) images to ''C:\programming\audina\ezFIT5\src\AHI.App.Logo\images''+  * Add Splash (BMP) and icons (ICO) images to ''C:\programming\audina\ezFIT5\src\AHI.App.Logo\images''
-    * Edit file ''LogoRes.rc'': <code>+  * Edit file ''LogoRes.rc'': <code> 
 +// 1. Compile resource file LogoRes.rc into LogoRes.res  
 +//    using the Visual Studio Command Prompt: 
 +//    - VS2010: Start > All Applications > Microsoft Visual Studio 2010 > Visual Studio Tools > Visual Studio Command Prompt (2010). 
 +//    - VS2013: Start > All Applications > Visual Studio 2013 > Visual Studio Tools > Developer Command Prompt for VS2013. 
 +//    - VS2015: Start > All Applications > Visual Studio 2015 > Visual Studio Tools > Developer Command Prompt for VS2015. 
 +//    Eg: C:\> RC <src>\AHI.App.Logo\LogoRes.rc  (or C:> <src>\AHI.App.Logo\compile-resources.bat) 
 +//  
 +// 2. Add res file to assembly. Project > Properties > Application (tab) > Resource File, and select LogoRes.res. 
 +// 3. Build assembly.
 LOGO001      BITMAP "images/logo16.bmp" LOGO001      BITMAP "images/logo16.bmp"
 LOGO002      BITMAP "images/logo256.bmp" LOGO002      BITMAP "images/logo256.bmp"
 +
 +// Must in Alphabetical order
 SPLASH_AUDINA         BITMAP "images\splash-audina.bmp" SPLASH_AUDINA         BITMAP "images\splash-audina.bmp"
 SPLASH_ACME           BITMAP "images\splash-acme.bmp" SPLASH_ACME           BITMAP "images\splash-acme.bmp"
 ... ...
-ICON_AUDINA           ICON "images\icon-audina.ico" +// Must in Alphabetical order 
-ICON_ACME             ICON "images\icon-acme.ico"+ICON_AUDINA           ICON "images\icon-audina.ico"  // icon index 0 
 +ICON_ACME             ICON "images\icon-acme.ico"    // icon index 1
 ... ...
 +// Order numerically, and strings in Alphabetical order
 STRINGTABLE STRINGTABLE
 { {
Line 81: Line 111:
   1002, "Acme ezFIT"   1002, "Acme ezFIT"
   ...   ...
-}</code> +}</code> <WRAP round info>Make sue AppIconIdx matches the icon index in ''<src>/installer/installer-ezfit.iss''</WRAP> 
-  * Encode Company Code. + 
-    * Use utility ''<src>/EncodeUtil/bin/Debug/EncodeUtil.exe''. Eg: ''Acme'', when encrypted becomes ''McFQ/ZiAWwo=''.  +Generate Logo assembly: 
-    * Add encoded company custom code to installer in ''<src>/installer/installer-ezfit.iss'': <code>#if AppCustomOrg == "Audina"+  * Compile resource file LogoRes.rc into LogoRes.res using the Visual Studio Command Prompt. In VS2015: Start > All Applications > Visual Studio 2015 > Visual Studio Tools > Developer Command Prompt for VS2015. Eg: ''C:\> RC <src>\AHI.App.Logo\LogoRes.rc''  (or ''C:> <src>\AHI.App.Logo\compile-resources.bat''
 +  * Add res file to assembly. Project > Properties > Application (tab) > Resource File, and select ''LogoRes.res''
 +  * Build assembly. 
 + 
 +=== Get Encoded Company Code === 
 +  * Use utility ''<src>/EncodeUtil/bin/Debug/EncodeUtil.exe''. Eg: ''Acme'', when encrypted becomes ''McFQ/ZiAWwo=''.  
 +  * Add encoded company custom code to installer in ''<src>/installer/installer-ezfit.iss'': <code>#if AppCustomOrg == "Audina"
   ...   ...
 #elif AppCustomOrg == "Acme" #elif AppCustomOrg == "Acme"
Line 98: Line 134:
 #else #else
   ...   ...
-#endif</code> +#endif</code> <WRAP round info>Make sue AppIconIdx matches the icon index in ''<src>\src\AHI.App.Logo\LogoRes.rc''</WRAP
-  Add custom Spec Sheets. + 
-    * Place custom PDF documents in ''C:\programming\audina\ezFIT5\src\ezFIT\Products\Catalog\<CompanyName>'' +=== Add Custom Spec Sheets === 
-    * In installer, add support to product catalog:<code>;---------------------------------------------------+  * Place custom PDF documents in ''<src>\ezFIT\Products\Catalog\<CompanyName>'' 
 +  * In installer, add support to product catalog:<code>;---------------------------------------------------
 ; Product Catalog ; Product Catalog
 ;--------------------------------------------------- ;---------------------------------------------------
Line 109: Line 146:
 Source: {#SrcAppDir}\Products\Catalog\*.pdf; DestDir: {app}\Products\Catalog; Flags: ignoreversion Source: {#SrcAppDir}\Products\Catalog\*.pdf; DestDir: {app}\Products\Catalog; Flags: ignoreversion
 #endif</code> #endif</code>
-  * Add software customizations: + 
-    * Disable ezFIT 4 support if not required (both, in app and installer). +=== Installer Customizations === 
-    * <code>#if AppCustomOrg == "Acme"+Add software installer customizations 
 +  * Disable ezFIT 4 support if not required (both, in app and installer). 
 +  * <code>#if AppCustomOrg == "Acme"
 ; Do not install ezFIT4 ; Do not install ezFIT4
 #else #else
 Filename: {tmp}\{#AppDestName}4-setup-{#AppCustomOrg}.exe; ... Filename: {tmp}\{#AppDestName}4-setup-{#AppCustomOrg}.exe; ...
 #endif</code> #endif</code>
-  * Create custom User Documentation. + 
-    * Create necessary files in ''C:\programming\audina\ezFIT5\src\UserDoc\custom''+=== Create Custom User Documentation === 
-      * acme.cfg (edit as necessary) +  * Create necessary files in ''C:\programming\audina\ezFIT5\src\UserDoc\custom''
-      * acme-header.html +    * acme.cfg (edit as necessary) 
-      * acme-footer.html +    * acme-header.html 
-      * images\splash-acme.png +    * acme-footer.html 
-    * Edit product software requirements matrix in ''<src>\UserDoc\104-hi-swrequirementmatrix.txt''+    * images\splash-acme.png 
-    * Edit Sparo conditional references (i.e, if supported by private label) in  +  * Edit product software requirements matrix in ''<src>\UserDoc\104-hi-swrequirementmatrix.txt''
-      * ''<src>\UserDoc\200-howto.txt''+  * Edit Sparo conditional references (i.e, if supported by private label) in  
-      * ''<src>\UserDoc\202-sparo.txt'' +    * ''<src>\UserDoc\200-howto.txt''
-    * Create end-user license in ''C:\programming\audina\ezFIT5\src\installer\license\license-Acme.txt''+    * ''<src>\UserDoc\202-sparo.txt'' 
-  Create custom Autorun +  * Create end-user license in ''C:\programming\audina\ezFIT5\src\installer\license\license-Acme.txt''
-    * Edit logo and application installation instructions in ''<src>\Autorun\main.pas''+ 
-    * Recompile Lazarus project ''<src>\Autorun\Autorun.lpi''+=== Create Custom CD-ROM Image === 
-    * Copy ''Autorun.exe'' to CD Image folder. +Create custom Autorun: 
-  Create CD Image folder in ''C:\programming\audina\ezFIT5\src\cdimg''. Eg:  +  * Edit logo and application installation instructions in ''<src>\Autorun\main.pas''
-    * ''Acme\drivers\'' +  * Recompile Lazarus project ''<src>\Autorun\Autorun.lpi''
-      * EMiniTec-2.08.24-2012-Drivers.exe +  * Copy ''Autorun.exe'' to CD Image folder. 
-      * HIPRO-4.0.0-2012-Drivers.exe + 
-      * NOAHlink-01.56.05-2013-Drivers.exe +Create CD Image folder in ''C:\programming\audina\ezFIT5\src\cdimg''. Eg:  
-      * ProgBox-Drivers-setup-2014-0311.exe +  * ''Acme\drivers\'' 
-    * ''Acme\installers\'' +    * EMiniTec-2.08.24-2012-Drivers.exe 
-      * acmeezfitapp5-setup.exe +    * HIPRO-4.0.0-2012-Drivers.exe 
-      * FBserver-setup.exe +    * NOAHlink-01.56.05-2013-Drivers.exe 
-    * ''Acme\Autorun.exe'' +    * ProgBox-Drivers-setup-2014-0311.exe 
-    * ''Acme\favicon.ico'' +  * ''Acme\installers\'' 
-  * Create NAnt-Gui script to build custom application. +    * acmeezfitapp5-setup.exe 
-  Create AutoUpdate files in webserver (locatee in ''\\webserver\website\downloads\ezfit'', URL ''http://www.audina.net/downloads/ezfit''): +    * FBserver-setup.exe 
-    * ''acmeezfitapp-Acme-2014-AutoUpdater.xml'' +  * ''Acme\Autorun.exe'' 
-    * ''acmeezfitapp-Acme-2014-ReleaseNotes.htm'' +  * ''Acme\favicon.ico'' 
-    * ''acmeezfitapp-Acme-2014-latest.exe'' + 
-  * Add references to software installer in ''/root/upd-ezfit-latest.sh' in web server:<code bash file upd-ezfit-latest.sh>+=== Custom Build === 
 +  * Create NAnt-Gui script to build custom application. Eg: ''<src>/installer/build-app-ezfit-acme.build'' 
 + 
 +=== Custom AutoUpdate === 
 +Create AutoUpdate files in webserver (located in ''\\webserver\website\downloads\ezfit'', URL ''http://www.audina.net/downloads/ezfit''): 
 +  * ''acmeezfitapp-Acme-2014-AutoUpdater.xml'' 
 +  * ''acmeezfitapp-Acme-2014-ReleaseNotes.htm'' 
 +  * ''acmeezfitapp-Acme-2014-latest.exe'' 
 + 
 +=== Publishing Scripts === 
 +  * Add references to software installer in ''/root/upd-ezfit-latest.sh'' in web server: <code bash file upd-ezfit-latest.sh>
 #!/bin/bash #!/bin/bash
 ## script: ./upd-ezfit-latest.sh ## script: ./upd-ezfit-latest.sh
Line 164: Line 213:
  
 #----------------------------- #-----------------------------
-Define Target Directory+User Defined Variables
 #----------------------------- #-----------------------------
 +# Define Target Organizations
 +TARGETORG=( "Audina" "Auditiva" "iEar" "MDHearingAid" "Acme" )
 +# Define Target Directory
 TARGETDIR="/var/www/downloads/prototypes" TARGETDIR="/var/www/downloads/prototypes"
-#SYSDATESTAMP="2013-0117"+Time Stamp (formatted as SYSDATESTAMP="2013-0117")
 SYSDATESTAMP=$(date +%Y-%m%d) SYSDATESTAMP=$(date +%Y-%m%d)
 SYSDATEYEAR=$(date +%Y) SYSDATEYEAR=$(date +%Y)
 +#-----------------------------
  
 # Use command line argument to override variables # Use command line argument to override variables
Line 184: Line 237:
 fi fi
  
-# Perform operations if TargetDir exists +totalOrg=${#TARGETORG[*]} 
-if cd $TARGETDIR; then +idx=0 
-  #----------------------------- +while [ $idx -lt $totalOrg ]; do 
-  # Link current ezfit installer to ezfit-latest.exe +  ORG=${TARGETORG[$idx]} 
-  #----------------------------- +  #echo "Processing company $ORG"
-  rm ezfit-Audina-$SYSDATEYEAR-latest.exe +
-  rm ezfit-Auditiva-$SYSDATEYEAR-latest.exe +
-  rm ezfit-MDHearingAid-$SYSDATEYEAR-latest.exe +
-  rm ezfit-Acme-$SYSDATEYEAR-latest.exe +
-  ln -s ezfit-setup-Audina-$SYSDATESTAMP.exe ezfit-Audina-$SYSDATEYEAR-latest.exe +
-  ln -s ezfit-setup-Auditiva-$SYSDATESTAMP.exe ezfit-Auditiva-$SYSDATEYEAR-latest.exe +
-  ln -s ezfit-setup-MDHearingAid-$SYSDATESTAMP.exe ezfit-MDHearingAid-$SYSDATEYEAR-latest.exe +
-  ln -s ezfit-setup-Acme-$SYSDATESTAMP.exe ezfit-Acme-$SYSDATEYEAR-latest.exe+
  
-  echo "Success linking version $SYSDATESTAMP to ezfit-setup-Audina-$SYSDATEYEAR-latest.exe" +  # Perform operations if TargetDir exists 
-  echo "Success linking version $SYSDATESTAMP to ezfit-setup-Auditiva-$SYSDATEYEAR-latest.exe" +  if cd $TARGETDIR; then 
-  echo "Success linking version $SYSDATESTAMP to ezfit-setup-MDHearingAid-$SYSDATEYEAR-latest.exe" +    #----------------------------- 
-  echo "Success linking version $SYSDATESTAMP to ezfit-setup-Acme-$SYSDATEYEAR-latest.exe" +    # Link current ezfit installer to ezfit-latest.exe 
-else +    #----------------------------- 
-  echo "Failed to link version $SYSDATESTAMP to ezfit-Audina-$SYSDATEYEAR-latest.exe" +    rm ezfit-$ORG-$SYSDATEYEAR-latest.exe 
-  echo "Failed to link version $SYSDATESTAMP to ezfit-Auditiva-$SYSDATEYEAR-latest.exe+    ln -s ezfit-setup-$ORG-$SYSDATESTAMP.exe ezfit-$ORG-$SYSDATEYEAR-latest.exe 
-  echo "Failed to link version $SYSDATESTAMP to ezfit-MDHearingAid-$SYSDATEYEAR-latest.exe+    echo "Success linking version $SYSDATESTAMP to ezfit-setup-$ORG-$SYSDATEYEAR-latest.exe" 
-  echo "Failed to link version $SYSDATESTAMP to ezfit-Acme-$SYSDATEYEAR-latest.exe"+  else 
 +    echo "Failed to link version $SYSDATESTAMP to ezfit-ORG-$SYSDATEYEAR-latest.exe" 
 +  fi 
 + 
 +  let idx=idx+1 
 +done 
 + 
 + 
 +#------------------------------------------------ 
 +# GetDate 
 +#------------------------------------------------ 
 +function GetDate() 
 +
 +   SYSDATE=$(date +%Y%m%d) 
 +
 + 
 +#------------------------------------------------ 
 +# GetDateTime 
 +#------------------------------------------------ 
 +function GetDateTime() 
 +
 +   SYSDATETIME=$(date +%Y%m%d-%H%M) 
 +
 + 
 +#------------------------------------------------ 
 +# GetDateStamp 
 +#------------------------------------------------ 
 +function GetDateStamp() 
 +
 +   SYSDATESTAMP=$(date +%Y-%m%d) 
 +
 + 
 +#------------------------------------------------ 
 +# GetDate 
 +#------------------------------------------------ 
 +function GetYear() 
 +
 +  SYSDATEYEAR=$(date +%Y) 
 +
 + 
 +#------------------------------------------------ 
 +# DisplayDate 
 +#------------------------------------------------ 
 +function DisplayDate() 
 +
 +   if [ ! -z $SYSDATE ]; then 
 +      echo $SYSDATE 
 +   else 
 +      echo "SYSDATE not defined Define using GetDate()" 
 +   fi 
 +
 +</code> 
 +  * Add references to software installer in ''/root/publish-ezfit-latest.sh'' in web server: <code bash file publish-ezfit-latest.sh> 
 +#!/bin/bash 
 +## script: ./publish-ezfit-latest.sh 
 +
 +#------------------------------------------------------------------------------ 
 +# Description: Publish ezFIT installer to AutoUpdate website 
 +# Usage: 
 +#   Format: 
 +#     Current date:    % ./publish-ezfit-latest.sh 
 +#     Arbitrary date:  % ./publish-ezfit-latest.sh [YYYY-MMDD] 
 +#            YYYY - Year (4 digits). 
 +#            MM   - Month (always 2 digits, including leading zero if necessary). 
 +#            DD   - Day of month (always 2 digitis, including leading zero if necessary). 
 +#   Example: % ./publish-ezfit-latest.sh 2014-0422 
 +#------------------------------------------------------------------------------ 
 + 
 +#----------------------------- 
 +# User Defined Variables 
 +#----------------------------- 
 +TARGETORG=( "Audina" "Auditiva" "iEar" "MDHearingAid" "Acme"
 +TARGETAPP=( "ezfit" "fitpro" "accufit" "mdtune" "acmefitapp"
 +SOURCEDIR="/var/www/downloads/prototypes" 
 +TARGETDIR="/var/www/downloads/ezfit" 
 +#SYSDATESTAMP="2013-0117" 
 +SYSDATESTAMP=$(date +%Y-%m%d) 
 +SYSDATEYEAR=$(date +%Y) 
 + 
 +# Use command line argument to override variables 
 +if [ -"$1" ] 
 +then 
 +  echo "Current version $SYSDATESTAMP will be ovewritten with $1" 
 +  SYSDATESTAMP="$1" 
 +  SYSDATEYEAR=${SYSDATESTAMP:0:4}
 fi fi
 +
 +# Try to create TargetDir if it does not exist
 +if ! cd $TARGETDIR; then
 +  mkdir $TARGETDIR
 +fi
 +
 +totalOrg=${#TARGETORG[*]}
 +idx=0
 +while [ $idx -lt $totalOrg ]; do
 +  ORG=${TARGETORG[$idx]}
 +  APP=${TARGETAPP[$idx]}
 +  #echo "Processing company $ORG and app $APP"
 +
 +  # Perform operations if TargetDir exists
 +  if cd $TARGETDIR; then
 +    #-----------------------------
 +    # Link current ezfit installer to ezfit-latest.exe
 +    #-----------------------------
 +    rm $APP-$ORG-$SYSDATEYEAR-latest.exe
 +
 +    echo "Copying from $SOURCEDIR to $TARGETDIR . . ."
 +    #ln -s $1 ezfit-setup-2012-latest.exe
 +    if [ -n "$1" ]; then
 +      cp $SOURCEDIR/ezfit-setup-$ORG-$SYSDATESTAMP.exe $APP-$ORG-$SYSDATEYEAR-latest.exe
 +    else
 +      cp $SOURCEDIR/ezfit-$ORG-$SYSDATEYEAR-latest.exe $APP-$ORG-$SYSDATEYEAR-latest.exe
 +    fi
 +    chown www-data:web $APP-$ORG-$SYSDATEYEAR-latest.exe
 +    echo "Success copying version $SYSDATEYEAR to $APP-$ORG-$SYSDATEYEAR-latest.exe"
 +  else
 +    echo "Failed to link version $SYSDATEYEAR to $APP-$ORG-$SYSDATEYEAR-latest.exe"
 +  fi
 +  let idx=idx+1
 +done
  
  
Line 254: Line 417:
 } }
 </code> </code>
 +
 == Private Brand == == Private Brand ==
   * Same steps as Private Label software, except the following field: <code csharp>aCompany.ManufacturerID = TManufacturerID.Custom // Custom manufacturer is used for Private Brand</code>   * Same steps as Private Label software, except the following field: <code csharp>aCompany.ManufacturerID = TManufacturerID.Custom // Custom manufacturer is used for Private Brand</code>