- Msi Packaging Best Practices And Standards
- Packaging Best Practices
- Golang Packaging Best Practices
- Nuget Packaging Best Practices
Packaging best practices The experience your customer receives when they order product from you should be flawless. We understand that you can’t always review every shipment before the product arrives at a warehouse, either because it is shipped direct from the manufacturer, or you simply don’t have the resources to inspect every shipment. 1.1 This practice establishes minimum requirements for packaging of supplies and equipment, exclusive of ammunition, explosives, or hazardous materials, as covered in Title 49 of the Code of Federal Regulations. 1.2 The values stated in inch-pound units are to be regarded as standard. No other units of measurement are included in this standard. Packaging Best Practices Presentation 1. Packing & PackagingGuidelines Prepared for: 2. Midland Container Background John Revitte – Account Manager Scott MacFarland – Packaging Designer Provide your corrugated cartons & packaging Out plant is located in Franksville Partners with Thermal Transfer for over 35 years.
Packaging is one of the most important final steps you can do to ensure the freshness and quality of your produce.
With the different types of packaging, it’s hard to know where to start and how to do it right.
- Remember the primary market drivers. The ideal retail-ready package is a shipping package that can be almost instantly shelf-ready. Understand the brief or the specific goal you need to meet completely, and ask for all marketing input upfront. Get shopping data from retailers, if possible, to learn what forms have been working for the retailer, and keep those in mind throughout the package development process.
- Engage suppliers early. Always work closely with suppliers in order to optimize the retail product SKUs and features before starting the real project. Make sure you understand the customers’ requirements.
- Mind your perforations. The type of perforation will affect the ease of tearing, and the design and placement of a tear-off part will affect the strength of the package. One best practice when designing retail-ready packaging is to double-check that your new packaging design will work with the current packaging equipment. A simple thing like a perforation pattern can end up right where a suction cup is supposed to pick up and place a package, which can cause major issues for something relatively small.
- Maximize the experience for retailer staff. Keep it simple. Perform ethnographic research and carefully watch retailer staff interact with existing retail-ready packaging. Make the packaging intuitive for the stock person to display correctly. Too many parts and wordy instructions should be avoided. Instead, develop easy-to-follow graphic instructions as long as they don’t detract from the overall visual design. Construct a package that contains a reasonable quantity of product, that can be loaded in a single action, and that is easy to swap out and dispose of with minimal waste. When reasonable, make reloading possible even with some quantity of product still in the retail-ready packaging, to avoid stock-outs.
- Maximize the experience for consumers. Always design with the consumer in mind. Make sure the packaging is not only easy to stock on shelf and looks great, but also that the consumer can remove the primary product package from the retail-ready packaging easily. With the short time you have to get the consumer’s buy decision, you can’t afford to be hard to pick up at the crucial moment of sale. Square-ness and perpendicularity are critical to a sturdy, stackable presentation, but avoid sharp corners and edges for customer safety and comfort when reaching into the retail-ready packaging.
- Compromise to align goals. Retail-ready packages should be thought of holistically, as primary package design has an impact on secondary packaging and on pallet optimization. Reducing material thickness cuts costs, but a common pitfall is not having heavy enough carton weight, or strong enough seals, to hold the contents securely during shipping. Understanding the quality of overseas board is critical when designing a retail-ready package. Develop multiple mockups and test packages with drop tests and on actual shelves to confirm viability.
- Invest in thorough design exploration. Let packaging designers do their job to prevent design by committee. Avoid “me-too” packaging strategies that dilute the brand. Start with the mandatory labeling elements on the retail-ready packaging first and then design around them, because starting with a graphic element first can be counterproductive. Retail-ready packages are highly marketing driven, so creativity in graphic package design tends to trump functionality. Look to other categories for inspiration. Finally, use a collaborative approach with production to design a functional package that is both eye-catching and easily automated.
- Present a conscientious structure. Avoid odd shapes and complicated packaging that will not be seen as efficient by the retailer and the consumer. Avoid standard “stadium case” packaging that does not perform well on shelf. One pitfall is falling into something so specialized there is no flexibility in materials supply. Whenever possible, minimize the dimensional changes between SKUs and packaging. For instance, if you have a series of cartons for the same product but different counts, only change one dimension, which in turn could prevent changes in case dimensions.
- Don’t skimp on printing. Flexographic printing on corrugated and paperboard has improved in recent years, but make sure not to compromise the brand’s visual equity. Make sure brand impression still is strong and represents the brand in its best light, and that print registration stays within acceptable variances. And consider shelf wear and its impact on shelf appearance when choosing materials and finishes.
- Sweat the details. In-the-field testing is almost a must to avoid failures with packaging that inhibits product from being picked off the shelves because of its bad appearance. If feasible, invest in ISTA certification. Use only certified materials for distribution in the geographic locations intended, and maintain records of objective evidence of certification. Double-check all retailer specifications, including pallet type, weight, height, materials, signage, etc. Consider quality control camera inspection to ensure the right materials are used and the right UPC code is present on every package.
Introduction
The guidelines described here are intended to give all the packages the same look and feel as well as to ensure the quality of the packages. The term legacy will be use throughout this document. A legacy installation is a traditional installation that is not MSI based.
MSI is the Packaging Standard
All packages should be in the MSI/MST format when delivered to the customer. This goes for all packages, even ones as trivial as creating a single shortcut in the start menu.
MSI Capturing
If an legacy installation is captured as an MSI, it is required to be done on a clean machine. A clean machine must have only the following:
- The operating system (i.e. Windows 10)
- Operating system service packs required by the client
- Single Administrator Account
A clean machine must not have the following:
- Any core applications for that build
- Additional user accounts beyond the local administrator
- Antivirus protection
The tool used to capture should be installed on a network share point. This will maintain the integrity of our clean machine by keeping it free of any installations.
Naming Conventions Inside the MSI
Product Name
GOOD! | Adobe Acrobat Reader 9.0 |
BAD | Adobe Acrobat Reader |
BAD | Acrobat Reader |
BAD | Acrobat Reader 9.0 |
Product Version
This is the version of the product being packaged. Captured legacy installations must adhere to Microsoft versioning rules. Vendor MSI will retain the version set by the vendor.
Major_Version.Minor_Version.Build_Number.Optional
Major_Version: 0 – 255
Minor_Version: 0 – 255
Build_Number: 0 – 65,535
Optional: Can be whichever number you like, it is not read by the Microsoft Installer.
If the product version does not match this format, it should be changed to match so that it can be properly recognized and upgraded in the future. Here are some examples of non-compliant versions and what to change them to:
Microsoft word 2002 SP3 –> 10.676.6735 (All MS products will have a valid version)
Somecompany InHouse App –> 1.0.0 (If this is the first version)
Acrobat Reader 6 –> 6.0.1 (Enter the full version always)
Bloomberg Oct 5 2006 –> 006.10.05 (Enter dates YYY.MM.DD)
It is important to remember that MSIs will upgrade based on upgrade code and version number. So make sure that subsequent versions of applications will exceed the present ones.
Manufacturer
The manufacturer or vendor should be displayed the same each time. Include the full company name but ignore any prefixes they may use, such as inc, ltd, corporation, etc.
For example:
Google Ltd –> Google
IBM Corporation –> IBM
Microsoft Corporation –> Microsoft
Adobe Systems Inc –> Adobe
Author
The Author field in the repackaged MSI’s “Summary Information Stream” must be set to:
Malina Services
Do not specify a country name, or an individual packager name.
Installation Directory
All application should be installed into the directory:
C:Program FilesVendorNameApplicationName
C:Program Files (x86)VendorNameApplicationName
OR
C:Program FilesApplicationName
C:Program Files (x86)ApplicationName
An application cannot install anywhere else without explicit permission by the account owner or another designated authority for the account. The following locations are NOT allowed to install the application to:
C:AppName C:WindowsAppName C:Windows … AppName somenetworkdriveAppName
If an application cannot support spaces in the name (i.e. program files) then install the application to:
C:AppsAppName
Note: The MSI Property INSTALLDIR should be set to this directory
Programs and Features (Previously: Add/Remove Programs)
Modify/Change Button
The modify/change button should be disabled. The users should not have the ability to modify the installation of the packages. (MSI Property: ARPNOMODIFY=1)
Display Name
Package names must appear in add remove programs with the vendor supplied name. If the package name does not appear in the capture for some reason, then give a user friendly name that can be read by users (i.e. Adobe Acrobat Reader 5.0). Do not display the other naming convention in add/remove programs (i.e. Adobe_AcrobatReader_5.0_W7_EN_B1).
Msi Packaging Best Practices And Standards
Correct
Incorrect
MSI Properties
ALLUSERS
ALLUSERS=1 should always be set to ensure packages install per-machine, not per-user.
LIMITUI
LIMITUI=1 should be set to restrict the user interface (UI) level to ‘Basic’ (in conjunction with ARPNOMODIFY=1, see note below)
- Required for authored/captured MSIs to ensure that the package installs without showing UI Dialogs (if accidentally run manually, etc.)
- Incorporated into Transform’s property table if possible (for consistency and, for example, if the /QN switch is forgotten during deployment)
IMPORTANT: If you set LIMITUI=1, you MUST ALSO set ARPNOMODIFY=1. (If LIMITUI=1 but the ‘Modify/Change’ button in Add/Remove Programs is still visible, msiexec.exe may get stuck in a loop when the user clicks the ‘Modify/Change’ button.) In other words, if the package requries ‘Modify/Change’ functionality via Add/Remove Programs, then do NOT add the LIMITUI proprety.
QA must test the package at least once to ensure it will function as expected for the customer.
ARPNOMODIFY
ARPNOMODIFY=1 will disable to modify button in add/remove programs. You can also accomplish this in the General Information – add or remove programs. Setting ARPNOMODIFY=1 is mandatory if LIMITUI=1 (see above.)
ROOTDRIVE
ROOTDRIVE=C: should be set unless the client is using a different drive letter, in which case set the appropriate letter drive as the root drive. If this property is not set, the installer will install to the drive with the most amount of disk space.
REBOOT
REBOOT=ReallySuppress should be set to ensure that the MSI does not ever reboot. All reboot will be controlled by the deployment tool.
ISCHECKFORPRODUCTUPDATES
ISCHECKFORPRODUCTUPDATES=0, this is not a service we use, and should always be set to 0. ONLY edit this Property if it already exists. If it does NOT exist, then do NOT create it. (It is specific to packages created with InstallShield.)
INSTALLDIR
INSTALLDIR=Set to the main installation folder of your application.
Note: INSTALLDIR is not found in the Property table; it is actually defined via the Directory table and the current value for INSTALLDIR is displayed in InstallShield’s ‘General Information’ section.
Merge Modules
Use Merge Modules whenever possible for any common components. Try to use commercially produced merge modules when possible.
Registry
Ensure that all user registries are separated into their own components separate from machine registries. This will ensure that when new users log onto the machine, the self-repair will detect a missing components in the user’s profile and install the user components for that new user.
Files
Ensure that all user files are separated into their own components separate from machine files. This will ensure that when new users log onto the machine, the self-repair will detect a missing components in the user’s profile and install the user components for that new user.
INI Files
All ini files must be written through the IniFile table in the MSI. No ini file should be created as a conventional file through the File table in the MSI.
Shortcuts
All shortcuts should be placed in:
Start MenuProgramsVendorShortcut Name
If the shortcut is placed in All Users of the Current User profile depends on the account. If the account has not specified then by default we always install shortcuts to the All Users profile. Shortcuts should never reside in the Default User profile unless this is explicitly requested by the client.
Remove all shortcuts that reference upgrading or uninstalling the application. Remove all shortcuts from the desktop and quickh toolbar unless specifically requested by the client.
Advertising
Vendor MSI with Shortcuts – You should not change the advertisement settings for vendor MSI shortcuts. If the vendor MSI’s shortcuts are not advertised and user files/registry needs to be copied to profiles, use Active Setup.
Vendor MSI without Shortcuts – Use Active Setup if user files/registry need to be copied to profiles.
Captured MSI with Shortcuts – Try to advertise all shortcuts first. Only if a shortcut cannot be advertised for some reason, then Active Setup can be used.
Captured MSI without Shortcuts – Use Active Setup if user files/registry needs to be copied to profiles.
BOTTOM LINE: Always use advertisement when possible, use Active Setup as an alternative.
There are other occasions that Active Setup may be used when Self-Healing is not sufficient.
File Associations
File associations are allowed provided they do not override associations set by another application. Certain exceptions can be made, for example if Mozilla Firefox became the new default HTML viewer, then it would take over the file HTML association from Internet Explorer.
Example:
To have the extension .spl opened by the program sample.exe:
Key: HKCR.spl
Value: Default = “SPL.Document”
Key: HKCRSPL.Document
Value: default = “SPL Document”
Key: HKCRSPL.Documentshellopencommand
Value: default = “C:Program FilesSampleAppSample.exe” “%1”
Application Paths
All executable applications should be registered with windows. The two ways to register these executables is:
- The executable’s folder is registered in the PATH
- The executable is registered in the registry (HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Paths)
Example:
Key: HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Pathssample.exe
Values: (Default) = C:Program FilesSampleAppSample.exe
Path = C:Program FilesSampleApp
Most application should use this second method. Only use the path if the vendor’s installation modifies the path.
Services
Make sure that the service is properly started if required when the package installs. Certain captured services will only start if prompted or after a reboot. Also make sure to use the NT Services component in installshield, do not install through the registry.
Media
Captured or built MSI’s media compression should be set to internal CAB files.
Vendor media should remain as delivered from the vendor for both internal and external compresses or uncompressed media.
Hardware Drivers
Legacy setups that install hardware drivers may be wrapped directly confirmed if they are instead of capturing if they are proving too difficult to capture. If this is the case, see the Legacy Installations section.
Legacy Installations
Legacy Installations that cannot be captured are very rare, but they do exist.
Self-Healing
All mandatory components (OCX, DLL, EXE, Shortcuts, critical files) must be able to self-heal if removed. To accomplish this, review the components and follow the component rules:
- No component will contain more than 1 system file (DLL, OCX, EXE)
- Component will not contain multiple files from different directories
- No component will contain multiple registry keys from different hives
- User profile files and folders will be in a component with a HKCU registry value set as the key (create a dummy key if required). This will launch the self-repair when a new user logs on to a machine for the first time.
System Files to Append
Never overwrite any of the following system files. New information must be appended to them:
- C:WINDOWSODBC.INI
- C:WINDOWSODBCINST.INI
- C:WINDOWSsystem.ini
- C:WINDOWSwin.ini
- C:WINDOWSsystem32driversetchosts
- C:WINDOWSsystem32driversetcnetworks
- C:WINDOWSsystem32driversetcprotocol
- C:WINDOWSsystem32driversetcservices
Changing Permissions on the Registry or File System
Windows Installer Service handles permissions via the LockPermissions table. You can use the LockPermissions table to set permissions on Files, Folders and Registry Keys. When it comes to handling File Permissions, it is essential to note that msi engine only supports granting permissions to files being installed with the windows installer package. If you want to set permissions on a file that already resides on the system, this will need to be done via Custom Actions. To set permissions using the LockPermissions table, simply right click on files, folders or registry items in InstallShield Editor and select Permissions. This enables the Permissions dialog, that allows you to specify a Domain, User and Permissions. Ensure that the Domain Field is empty. For User, you can use well Known names such as ‘Users’, ‘Everyone’, ‘Domain Users’, etc. For Permissions, simply check against the permissions you want to give.
If you use well known SIDs such as BuiltinPowerUsers or BuiltinUsers, make sure that you also add another entry in the Permissions for BuiltinAdministrators. Not doing so, will cause the local administrator to be locked out of the object.
Summary:
- You can set Permissions on Files / Folders / Registry Keys
- Permissions can only be set on Files being installed by the msi package
- When setting permissions on Files, the media should be uncompressed
- When setting permissions on well known SID BuiltinPower Users or BuiltinUsers, you must also set permissions on BuiltinAdministrators
Packaging Best Practices
Upgrade Codes
If an MSI is an upgrade, it should contain the upgrade code of the previous version so that it will perform the upgrade.
First Use Dialogs
Unless specified by the user, these first use dialogs must be confirmed if they are kept or not with the requestor.
Golang Packaging Best Practices
Launch Conditions
All MSIs created (Vendor and Captured) will contain a launch condition to check to ensure that the target operating system is not a Windows server. Add the following launch condition as shown below.
Keep other launch conditions to a minimum in order to keep the MSI as unrestricted as possible. If checks need to be done for dependencies or system requirements.
Cached Packages
Packages that require local caching, will all be cached to the following location:
Nuget Packaging Best Practices
<WINDIR>Downloaded Installations<MSIGUID>