5 votos

¿Cómo instalar XCode una .archivo pkg en un lugar diferente?

Estoy tratando de instalar el IOS Simuladores a través de la línea de comandos. Desde el plist descarga, puedo ver esto:

<dict>
    <key>dependencies</key>
    <array/>
    <key>fileSize</key>
    <integer>584180466</integer>
    <key>identifier</key>
    <string>Xcode.SDK.iPhoneSimulator.6.1</string>
    <key>name</key>
    <string>iOS 6.1 Simulator</string>
    <key>source</key>
    <string>http://devimages.apple.com/downloads/xcode/simulators/ios_6_1_simulator.dmg</string>
    <key>userInfo</key>
    <dict>
        <key>ActivationPredicate</key>
        <string>$XCODE_VERSION &gt;= '5.0'</string>
        <key>ApplicationsBlockingInstallation</key>
        <array>
            <string>com.apple.iphonesimulator</string>
        </array>
        <key>IconType</key>
        <string>IDEDownloadablesTypeSimulator</string>
        <key>InstallPrefix</key>
        <string>$(DEVELOPER)</string>
        <key>InstalledIfAllPathsArePresent</key>
        <array>
            <string>$(DEVELOPER)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk</string>
        </array>
        <key>RequiresADCAuthentication</key>
        <false/>
        <key>Summary</key>
        <string>This package enables testing of this previous version of iOS by installing legacy frameworks into the iOS Simulator.  If your app intends to support this version of iOS, it is highly recommended that you download this package to aid in your development and debugging.</string>
        <key>Xcode.SDKs</key>
        <array>
            <dict>
                <key>CanonicalName</key>
                <string>iphonesimulator6.1</string>
                <key>Path</key>
                <string>$(DEVELOPER)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk</string>
                <key>Platform</key>
                <string>com.apple.platform.iphonesimulator</string>
                <key>SupportedDeviceFamilies</key>
                <array>
                    <integer>1</integer>
                    <integer>2</integer>
                </array>
                <key>Version</key>
                <string>6.1</string>
            </dict>
        </array>
    </dict>
    <key>version</key>
    <string>6.1</string>
</dict> 

Aquí está una .dmg http://devimages.apple.com/downloads/xcode/simulators/ios_6_1_simulator.dmg y InstallPrefix. Dentro de la .dmg es .pkg archivo que instala a la (relativa) ./Platforms.

El problema es que, si acabo de intentar instalar que a través de la installer:

sudo installer -pkg /Volumes/.../ios_6_1_simulator.pkg -target /

Se instalará a /Platforms en lugar de la intención de /Applications/Xcode.app/Contents/Developer/Platforms.

Yo soy incapaz de establecer un objetivo diferente, que no es un punto de montaje. ¿Cómo hago para que se instale en ese lugar?

EDIT: no funciona si no establece una costumbre punto de montaje. Aquí está mi intento:

$ mkdir /tmp/SampleDir

$ hdiutil create -srcfolder "/tmp/SampleDir" -volname "Sample Install" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size 1g pack.temp.dmg
.............................................................................................................................................................................................................................................
created: /tmp/pack.temp.dmg

$ hdiutil attach -readwrite -noverify -noautoopen -mountpoint /Volumes/SampleDir "pack.temp.dmg"
/dev/disk4              GUID_partition_scheme           
/dev/disk4s1            Apple_HFS                       /Volumes/SampleDir

$ sudo installer -pkg ~/Desktop/iPhoneSimulatorSDK6_1.pkg -target /Volumes/SampleDir
Password:
installer: Package name is iPhoneSimulatorSDK6_1
installer: Installing at base path /Volumes/SampleDir
installer: The install failed (The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.)

3voto

Jonathan Sampson Puntos 121800

En una situación donde se va a instalar un paquete que apoya la reubicación, es posible proporcionar un instalador opciones de archivo XML a installer a modificar las opciones de instalación. Sin embargo, esto puede no ser compatibles o disponibles en todos los paquetes (dependiendo de cómo el paquete fue construido). Desde el instalador de la página man:

The customLocation attribute can be set for a choice only if that choice
explicitly allows a user-defined path. That is, if the choice would have a
Location popup when viewed in the Customize pane of the Installer application, it 
can be set via customLocation.  (Otherwise, installation paths cannot be 
arbitrarily modified, since the package author must account for custom install 
locations for the installation to work properly.)

Por lo que puedo ver, la iPhoneSimulatorSDK6_1.pkg que estás referencia no admite esta opción. Sin embargo, todavía es posible realizar la reubicación de la instalación del paquete de carga útil después de la instalación:

sudo installer -pkg /Volumes/Bittersweet6M149.iPhoneSimulatorSDK6_1/iPhoneSimulatorSDK6_1.pkg -tgt /
sudo mv /Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator/Developer/SDKs

Alternativamente, puede utilizar pkgutil a expandir el paquete, cpio a extraer la carga, y mvponer el SDK en su lugar:

pkgutil --expand /Volumes/Bittersweet6M149.iPhoneSimulatorSDK6_1/iPhoneSimulatorSDK6_1.pkg ~/iPhoneSimulator6_1
cd ~/iPhoneSimulator6_1
cpio -i -I ~/iPhoneSimulator6_1/Payload
sudo mv Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator/Developer/SDKs

No estoy seguro exactamente de cómo Xcode lugares de los simuladores/SDKs en la ubicación correcta. Sin embargo, tanto de los métodos mencionados anteriormente permiten el simulador de iOS 6.1 para ser utilizado dentro de Xcode 5.0.2 en Mavericks (10.9).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X