0

1 つの Silverlight コンポーネントの構成ファイルを変更する必要がある 1 つのインストーラーを作成しています。このコンポーネントの構成ファイルは XAP ファイル内にあります。その設定ファイルを変更する方法はありますか?

4

2 に答える 2

1

構成ファイルを XAP ファイルと並べてホストします。

  • ../あなたのプロジェクト.XAP
  • ../YourProjectSettings.XML

次のコードは、XAP と同じディレクトリにある「Settings.xml」というファイルをダウンロードし、それを分離ストレージに配置します。その後、後で必要に応じて開いたり、閉じたり、解析したりできます。

    private void DownloadFile()
    {
        Uri downloadPath = new Uri(Application.Current.Host.Source, "Settings.xml");
        WebClient webClient = new WebClient();
        webClient.OpenReadCompleted += OnDownloadComplete;
        webClient.OpenReadAsync(downloadPath);
    }

    private void OnDownloadComplete(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error != null) throw e.Error;

        using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            IsolatedStorageFileStream isoStream = isoStorage.CreateFile("CachedSettings.xml");

            const int size = 4096;
            byte[] bytes = new byte[4096];
            int numBytes;

            while ((numBytes = e.Result.Read(bytes, 0, size)) > 0)
                isoStream.Write(bytes, 0, numBytes);

            isoStream.Flush();
            isoStream.Close();
        }
    }

このようにして、インストーラーは、条件付きファイル コピーを使用して、必要な設定ファイルを XAP と並べて追加できます。XAP を開くのはハックです。インストーラー コードが複雑になり、署名付き XAP が無効になります。

于 2013-02-19T20:40:39.510 に答える
0

XAP ビルドでこれらの変更を行うコンソール アプリケーションを C# で作成しました。NSIS でこれを行う方法が見つからなかったため、インストーラーからそのアプリケーションを呼び出すだけです。

于 2013-03-01T08:19:17.053 に答える