Pages Menu
Categories Menu

Опубликовано | 2 коммент.

Общие изменения песочницы Package.ini в ThinApp.

После того, как ThinApp сделает второй снимок системы (Postscan) откроется последнее перед сборкой окно Ready to Build, в котором есть кнопка Edit Package.ini, кликнув по которой можно открыть готовый к редактированию файл песочницы.

ThinApp7

В нашем случае он выглядит так:

; 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

;-------- General Purpose Parameters ----------
SandboxName=CCleaner (remove only)
InventoryName=CCleaner (remove only)
InventoryIcon=%ProgramFilesDir%\CCleaner\CCleaner.exe
;PermittedGroups=Administrators;Remote Desktop Users
;RemoveSandboxOnExit=1
;RemoveSandboxOnStart=1
;SandboxNetworkDrives=1
;SandboxRemovableDisk=1
;VirtualizeExternalOutOfProcessCOM=0

;OptionalAppLinks=plugins\*.exe
;RequiredAppLinks=\\server\share\*.exe;c:\abs\path\file.exe
VirtualDrives=Drive=c, Serial=b0a9c3db, Type=FIXED
;VirtualDrives=Drive=a, Serial=009c1630, Type=REMOVABLE; Drive=c, Serial=b0a9c3db, Type=FIXED; Drive=d, Serial=b0a9c3db, Type=CDROM
;VirtualComputerName=5FCC73CEE4AA415

AnsiCodePage=1251
LocaleIdentifier=1049

; 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%

[Uninstall CCleaner.exe]
Source=%ProgramFilesDir%\CCleaner\uninst.exe
Shortcut=CCleaner.exe
WorkingDirectory=%ProgramFilesDir%\CCleaner
Shortcuts=%Programs%\CCleaner

[CCleaner Homepage.exe]
Source=%Programs%\CCleaner\CCleaner Homepage.url
Shortcut=CCleaner.exe
Shortcuts=%Programs%\CCleaner

[uninst.exe]
Source=%ProgramFilesDir%\CCleaner\uninst.exe
Shortcut=CCleaner.exe
Disabled=1

[cmd.exe]
Source=%SystemSystem%\cmd.exe
Shortcut=CCleaner.exe
Disabled=1

[regedit.exe]
Source=%SystemRoot%\regedit.exe
Shortcut=CCleaner.exe
Disabled=1

Как видно из файла собирался CCleaner, хотя эту программу нет смысла делать портативной в ThinApp, переносная версия есть на официальном сайте производителя.

Для начала надо найти раздел [Compression], тип компрессии может быть Fast и None, то есть с компрессией или без неё.

Но, хотя в окне Package Settings и была поставлена галочка на Compress virtual package, сжатие конечного файла будет не максимально возможным. Увеличить сжатие можно дописав ниже в блоке строку (OptimizeFor=Disk), конечный блок кода будет выглядеть так:

[Compression]
CompressionType=Fast
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=) и обязательно проверяем путь к ярлыку создаваемого проекта.
Дальше, в этом же блоке, переходим к строкам:

VirtualDrives=Drive=c, Serial=b0a9c3db, Type=FIXED
;VirtualDrives=Drive=a, Serial=009c1630, Type=REMOVABLE; Drive=c, Serial=b0a9c3db, Type=FIXED; Drive=d, Serial=b0a9c3db, Type=CDROM
;VirtualComputerName=5FCC73CEE4AA415

И удаляем (;) в начале строки ( ;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.

2 комментария

  1. Еще одна полезная опция для раздела [BuildOptions]. Убрать всплывающее окно в углу экрана можно прописав в этом разделе строку .ShowSB=0

    • Да, если ТА не пропатчен, эта строка хороший выход.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

↓