После того, как ThinApp сделает второй снимок системы (Postscan) откроется последнее перед сборкой окно Ready to Build, в котором есть кнопка Edit Package.ini, кликнув по которой можно открыть готовый к редактированию файл песочницы.
В нашем случае он выглядит так:
; This file can be used to configure build and runtime options for packages
; Lines that begin with a semicolon contain only comments and do not have any effect
; For documentation and to obtain a complete list of options available visit:
;
; http://www.vmware.com/info?id=906
;
[Compression]
CompressionType=Fast
[Isolation]
DirectoryIsolationMode=Merged
[BuildOptions]
;-------- MSI Parameters ----------
;Enable MSIFilename if you want to generate a Windows Installer package.
;MSIFilename=CCleaner (remove only).msi
;MSIManufacturer=дом
;MSIProductVersion=1.0
;MSIDefaultInstallAllUsers=1
;MSIRequireElevatedPrivileges=1
;MSIInstallDirectory=CCleaner (remove only) (VMware ThinApp)
;MSIProductCode={DA24F904-DD58-1B5E-5A6E-2972AEB6BBBC}
;MSIUpgradeCode={E374C71F-ECB7-09FF-2034-BEF7FB3F0F89}
;MSIStreaming=0
;MSICompressionType=Fast
;MSIArpProductIcon=%ProgramFilesDir%\CCleaner\CCleaner.exe
;-------- AppSync Parameters ----------
;AppSyncURL=https://example.com/some/path/PackageName.exe
;AppSyncUpdateFrequency=1d
;AppSyncExpirePeriod=30d
;AppSyncWarningPeriod=5d
;AppSyncWarningFrequency=1d
;AppSyncWarningMessage=This application will become unavailable for use in %remaining_days% day(s) if it cannot contact its update server. Check your network connection to ensure uninterrupted service.
;AppSyncExpireMessage=This application has been unable to contact its update server for %expire_days% day(s), so it is unavailable for use. Check your network connection and try again.
;AppSyncUpdatedMessage=
;AppSyncClearSandboxOnUpdate=0
;-------- Parameters used only during Setup Capture ----------
SandboxPath=.
AccessDeniedMsg=You are not currently authorized to run this application. Please contact your administrator.
CapturedUsingVersion=4.7.2-771812
OutDir=bin
; If you have problems running a 32 bit application under 64 bit Windows, try enabling this line before building the project
;Wow64=0
; Enable this option to load .Net binaries from the system instead of the package on Windows 7
;LoadDotNetFromSystem=Win7
QualityReportingEnabled=0
; Enable this option to ignore DDE messages from external processes
;IgnoreDDEMessages=1
[CCleaner.exe]
Source=%ProgramFilesDir%\CCleaner\CCleaner.exe
;Change ReadOnlyData to bin\Package.ro.tvr to build with old versions(4.6.0 or earlier) of tools
ReadOnlyData=Package.ro.tvr
WorkingDirectory=%ProgramFilesDir%\CCleaner
Protocols=cclaunch
Shortcuts=%Programs%\CCleaner;%Desktop%
Как видно из файла собирался CCleaner, хотя эту программу нет смысла делать портативной в ThinApp, переносная версия есть на официальном сайте производителя.
Для начала надо найти раздел [Compression], тип компрессии может быть Fast и None, то есть с компрессией или без неё.
Но, хотя в окне Package Settings и была поставлена галочка на Compress virtual package, сжатие конечного файла будет не максимально возможным. Увеличить сжатие можно дописав ниже в блоке строку (OptimizeFor=Disk), конечный блок кода будет выглядеть так:
Следующий раздел [BuildOptions]. В нём находим блок Parameters used only during Setup Capture. Нужно найти здесь строку (SandboxPath=.), которая указывает расположение песочницы рядом с exe-файлом.
Сразу под ней прописываем строку (CachePath=), что расположит кэш в этой же песочнице. Еще ниже (ChildProcessEnvironmentDefault=External). Эта строка позволит запускать внешние приложения и не дублировать их в виртуальном контейнере.
Ниже стоит прописать строку (ChildProcessEnvironmentExceptions=hh.exe), которая устранит проблемы с запуском файла справки.
Общий вид блока будет выглядеть так:
;-------- Parameters used only during Setup Capture ----------
SandboxPath=.
CachePath=
ChildProcessEnvironmentDefault=External
ChildProcessEnvironmentExceptions=hh.exe
AccessDeniedMsg=You are not currently authorized to run this application. Please contact your administrator.
CapturedUsingVersion=4.7.2-771812
OutDir=bin
Дальше находим блок General Purpose Parameters (общие параметры), в котором находим строку (InventoryIcon=) и обязательно проверяем путь к ярлыку создаваемого проекта.
Дальше, в этом же блоке, переходим к строкам:
И удаляем (;) в начале строки ( ;VirtualComputerName=5FCC73CEE4AA415)
Для чего это нужно? В строках (VirtualDrives=Drive=c, Serial=b0a9c3db, Type=FIXED) и (;VirtualComputerName=5FCC73CEE4AA415) прописывается Volume ID данного компьютера. Удаление (;) фиксирует Volume ID данного компьютера, что позволит запускать сборку на других компах. Это актуально далеко не на всех сборках, но лучше не ленится и снимать (;) всегда, хуже уж точно не будет.
Еще ниже находим (;Wow64=0). Эту строку, по уверениям производителя, следует включить при возникновении проблем с запуском 32 битных приложений на Windows 64. Включаем удалив (;).
Конечно указанные изменения в Package.ini не гарантируют идеальную работу ВСЕХ ваших сборок, но процентов 80 портативок будет нормально функционировать. Решение более сложных проблем стоит поискать на ru-board.
Еще одна полезная опция для раздела [BuildOptions]. Убрать всплывающее окно в углу экрана можно прописав в этом разделе строку .ShowSB=0
Да, если ТА не пропатчен, эта строка хороший выход.