Top > ClickOnce

ClickOnce。基本的にVisual Studio 2008準拠で書いています。

File not found: "tmp.txt" at page "ClickOnce"[Upload]

仕組み Edit

プロジェクトのプロパティ→「アプリケーション」タブ→「アセンブリ名」に入力したアセンブリ名で同一アプリケーションかどうか判定している。
これを変えてしまうと、インストールしたとき前のバージョンと別アプリとしてインストールされてしまう。
「アセンブリ名」に仮に「TestApp」とつけると、発行時にTestApp.applicationというファイルが作成される。

プロジェクト内のファイルのプロパティでビルドアクションを「コンテンツ」にしておくとそのファイルも発行に含まれる。
実際に発行されるファイルはプロジェクトのプロパティ→発行タブ→アプリケーションファイルボタンで確認できる。

ノウハウ Edit

applicationファイルの内容確認・編集(mageui.exe) Edit

Visual Studioコマンドプロンプトを起動し、mageuiと打つと起動する。

デスクトップにアイコンを作る Edit

スタートメニューの.appref-msへのショートカットをデスクトップに作成すればよい。
.appref-msそのものをコピーしてもいいが、万一ターゲットプラットフォームなどが変わった場合のために、ショートカットにしておいた方が無難か。
なお、ターゲットプラットフォームを変更すると、発行するときに「サーバのプラットフォームと違うがいいか」とメッセージボックスが出る。

更新をロールバックする(ユーザーが自分で行う方法) Edit

コントロールパネルから「アプリケーションを以前の状態に復元します」を選択。

XP[コントロール パネル]、[プログラムの追加と削除]
Vista/7/8[コントロール パネル]、[プログラム]、[プログラムと機能]

発行をロールバックする(発行をキャンセルし、前のバージョンに戻す) Edit

戻したいバージョンのフォルダの中の.applicationファイルをコピーするだけでいい。

例:

/TestApp
/TestApp/Application Files/
/TestApp/Application Files/TestApp_1_0_0_0/
/TestApp/Application Files/TestApp_1_0_0_1/

で1.0.0.1から1.0.0.0に戻したい場合は、

cp /TestApp/Application Files/TestApp_1_0_0_0/TestApp.application /TestApp

でOK。

署名に失敗しましたエラー(デジタル証明書の有効期限切れ) Edit

ClickOnceはデジタル証明書を使って署名しており、最初に発行してから1年たつと有効期間が切れて新バージョンを発行できなくなる
新バージョンを発行するには、下記の方法でRenewCert.exeをビルドして鍵を更新する。
このRenewCertで更新した場合、次の有効期間は5年らしい。

fileRenewcert.exe.tgz

ClickOnceのデジタル証明書を更新するには?

サーバにapacheを使う Edit

ClickOnceサーバにapacheを使える。
ただし、ファイル名がShift_JISでアップロードされるので

  • ftpでLinuxサーバ(ファイル名はUTF-8で運用)に直接発行している
  • 発行するファイルの中にマルチバイト文字を含んでいる場合

場合は要注意。
(実験した環境では「アプリケーションをダウンロードできません」というエラーが出たが、出ない場合もあった。原因不明)

対処法としては

  • apacheでmod_encodingを導入する
  • ローカルに発行して手動でFTPアップロードする(ファイル名の文字コードはUTF-8にして)
    など。

ちなみに、ブラウザのロケーションバーに日本語を直打ちした場合の挙動は

FirefoxUTF-8
IE10インターネットオプションの「詳細設定」の中に「UTF-8のURLを送信する」という項目があり、チェックがついているとUTF-8、いないとShift_JISで送信される(デフォルトはチェックあり)

httpd.confまたは.htaccessでmimeを設定する
http://www.atmarkit.co.jp/ait/articles/0611/08/news130.html

AddType application/x-ms-application .application
AddType application/x-ms-manifest .manifest
AddType application/octet-stream .deploy

ClickOnceアプリケーションをコマンドラインからアンインストールする Edit

こういう感じ

rundll32.exe dfshim.dll,ShArpMaintain AppName.application, Culture=neutral, PublicKeyToken=XXXXXX, processorArchitecture=x86

このPublicKeyTokenなどは、スタートメニューに作成される.appref-msをテキストエディタで開けば調べられる。

http://stackoverflow.com/questions/4992379/uninstalling-a-clickonce-application-silently

ClickOnceアプリケーションが保存される場所 Edit

%UserProfile%\Local Settings\Apps\2.0

プログラム内から発行のバージョンを取得する Edit

using System.Deployment.Application;  // 基本的にこの名前空間を使います。

private string GetVersion() {
  // ClickOnce でインストールされていない場合は空白を返す。
  if (! ApplicationDeployment.IsNetworkDeployed) return String.Empty;

  Version version = ApplicationDeployment.CurrentDeployment.CurrentVersion;
  return (
    version.Major.ToString() + "." +
    version.Minor.ToString() + "." +
    version.Build.ToString() + "." +
    version.Revision.ToString()
  );
}

http://blogs.wankuma.com/rti/archive/2007/03/22/68345.aspx



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Attach file: filetmp.txt.tgz 284 download [Information] fileRenewcert.exe.tgz 540 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes