0

AIRアプリケーションの自動更新機能を学んでいます。動作しない簡単なアプリケーションを作成しました。コードは以下のとおりです。

AutoUpdate.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" 
                   creationComplete="checkForUpdate()" >
<fx:Script><![CDATA[
    import air.update.ApplicationUpdaterUI;
    import air.update.events.UpdateEvent;

    private var appUpdater:ApplicationUpdaterUI=new ApplicationUpdaterUI();

    private function checkForUpdate():void
    {
        setApplicationVersion(); 
        appUpdater.delay = 1;
        appUpdater.isDownloadProgressVisible = true;
        appUpdater.isDownloadUpdateVisible = true

        appUpdater.isInstallUpdateVisible = true;
        appUpdater.isFileUpdateVisible = true;

        appUpdater.updateURL = "http://localhost:8081/DynamicWeb/release/update.xml";           
        appUpdater.isCheckForUpdateVisible = false; 
        appUpdater.addEventListener(UpdateEvent.INITIALIZED, onUpdate);
        appUpdater.addEventListener(ErrorEvent.ERROR, onError);
        appUpdater.initialize();
                   } 
    }

    // Find the current version for our Label below
    private function setApplicationVersion():void
    {
        var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor;
        var ns:Namespace = appXML.namespace();
        lbl.text = "Current version is " + appXML.ns::version;
        //Common.helpDetails = appXML.ns::versionLabel;

    }

    private function onError(event:ErrorEvent):void
    {
        //Alert.show(event.toString());
    }

    private function onUpdate(event:UpdateEvent):void
    {
        appUpdater.checkNow(); // Go check for an update now         } 
    }

]]></fx:Script>


<s:HGroup x="89" y="124" width="413" height="34">
    <s:Label id="lbl" />
</s:HGroup>

</s:WindowedApplication>

*最初はAutoUpdate-app.xmlで、update.xmlファイルのバージョンタグは1.0.0に設定されています

*サーバー側のupdate.xmlファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/1.0">
<version>1.0.0</version>
<url>http://localhost:8081/DynamicWeb/release/Update_air.air</url>
<description><![CDATA[
 Typically, this is used to summarize what's new in the release
 ]]></description>
</update>

  • これで、アプリケーションをエクスポートしてインストールしました。その後、ファイルAutoUpdate-app.mxmlとupdate.xml(サーバー側)の両方のバージョンを2.0.0に変更しました。ここで、アプリケーションをエクスポートしてサーバーにダンプしました(update.xmlがある「release」フォルダー内)。アプリケーションを起動すると、更新機能が機能しません。その何も起こっていません。CheckNow()メソッドが呼び出されますが、何も実行されません。私を助けてください。

私はAIR3.1に取り組んでい
ますが、エラーは発生していません。更新ウィンドウのみが機能していません。何が間違っているのか教えてください。ありがとう。

4

2 に答える 2

0

1) 実際のバージョンと update.xml をトレースし、正しいことを確認します。古いアプリを 1.0.0 バージョンで実行していることを確認する必要があります。ApplicationUpdaterUI.currentVersionところで、代わりにプロパティを使用できますNativeApplication.nativeApplication.applicationDescriptor

2) checkNow() の呼び出し後にイベントをリッスンしません。この記事のように、すべてのイベントをリッスンします。の

http://thanksmister.com/2009/09/13/custom-air-updater-interface-using-applicationupdater/ ( UpdateManager.as#initialize()を参照):

appUpdater.addEventListener(UpdateEvent.INITIALIZED, updaterEvent);
appUpdater.addEventListener(StatusUpdateEvent.UPDATE_STATUS, updaterEvent);
appUpdater.addEventListener(UpdateEvent.BEFORE_INSTALL, updaterEvent);
appUpdater.addEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, updaterEvent);
appUpdater.addEventListener(UpdateEvent.DOWNLOAD_START, updaterEvent);
appUpdater.addEventListener(ProgressEvent.PROGRESS, updaterEvent);
appUpdater.addEventListener(UpdateEvent.DOWNLOAD_COMPLETE, updaterEvent);
appUpdater.addEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, updaterEvent);
appUpdater.addEventListener(ErrorEvent.ERROR, updaterEvent);

private function updaterEvent(event : Event) : void {
    trace(event.type);
}

可能性があります、あなたは何かを逃しました...

于 2012-09-01T12:54:42.443 に答える
0

サーバー側の update.xml で、タグversionversionNumberに置き換える必要があります。これは AIR 2.5 以降で変更されました。

于 2013-05-28T06:30:19.387 に答える