次の方法で共有


ClickOnce と Windows インストーラーの選択

 

Michael Sanford
Xambi Solutions, Inc.

2005 年 1 月

概要:Michael Sanford は、.NET Framework 2.0 ClickOnce テクノロジを詳しく見て、既存の Windows インストーラー テクノロジと比較します。 Michael は、各テクノロジを使用するタイミングについていくつかの推奨事項を作成することで終了します。 (15ページ印刷)

内容

はじめに
Windows インストーラーの概要
製品、機能、コンポーネント
Windows インストーラー機能
ClickOnce の概要
主な相違点
選び方
Windows インストーラーと ClickOnce の両方を使用する
まとめ

はじめに

2004 PDC でデモを行った最もエキサイティングな機能の 1 つは、新しい ClickOnce 配置テクノロジでした。 印象的な機能セットを備えた ClickOnce は、アプリケーションを配置するための一般的な手法であると確信していますが、Windows インストーラーはどうでしょうか。 この記事では、ClickOnce の機能について説明し、その過程で 2 つのテクノロジの主な違いについて説明します。 最後に、これらの各デプロイ テクノロジをいつ使用するかを示すガイダンスを提供します。

Windows インストーラーの概要

Microsoft は、アプリケーションの展開時に直面した課題に関するお客様からのフィードバックに応じて、1999 年に Windows インストーラーを初めて導入しました。 具体的には、既存のインストール テクノロジにおける次の弱点を指摘しました。

  • COM コンポーネント、ActiveX コントロールなどの共有リソースを一貫して確実に管理できませんでした。 この問題は、一般的に "DLL Hell" と呼ばれます。
  • 標準のカスタマイズ機能を提供できませんでした。
  • インストール後にアプリケーション自体を修復または保守する方法は提供されませんでした。
  • アプリケーションの一部をオンデマンドでインストールできるようにするメカニズムを提供できませんでした。
  • インストールがオペレーティング システムと対話するための一貫したメカニズムを提供できませんでした。

Windows インストーラーは、Windows 2000 以降のすべてのオペレーティング システムに含まれるシステム レベルのコンポーネントです。 従来のインストール テクノロジが独自のスクリプトとファイル形式に依存していた場合、Windows インストーラーは、開いたデータベースのようなファイル形式を使用して、アプリケーション、そのリソース、および正常にインストールするために必要な操作を記述します。 データベース形式の内部構造 (標準のテーブルと列の定義を含む) は、プラットフォーム SDK の Windows インストーラー セクションにあります。 SDK の最新バージョンは にあります https://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Windows インストーラー パッケージは、ファイル拡張子が "msi" のファイルに格納されます。 これらのファイルの形式は OLE 構造化ストレージに基づく独自の実装ですが、プラットフォーム SDK で提供されるツールを使用して msi ファイルの内容に簡単にアクセスできます。 Platform SDK によって提供されるプライマリ msi 編集ツールは、コード名が "Orca" です。 下の図 1 に示すように、msi ファイルの論理構造はリレーショナル データベースの論理構造とよく似ています。

図 1. Orca を使用した msi ファイルの内容の表示

プラットフォーム SDK によって提供されるツールに加えて、msi の作成と管理のタスクを大幅に容易にするサードパーティ製のツールがいくつかあります。 主なベンダーの一部を次に示します。

製品、機能、コンポーネント

Windows インストーラー パッケージは、製品、機能、コンポーネントの論理構造に依存して、アプリケーションを機能のまとまりのある単位に分割します。 機能は、ユーザーがインストールを操作できる最下位レベルのエンティティであり、コンポーネントはインストール開発者が操作する最下位レベルのエンティティです。 たとえば、グラフィックス アプリケーションは、アプリケーションの実行可能ファイルをインストールするコア アプリケーション機能 (.exe)、およびクリップアートのオプションのコレクションをインストールするクリップアート機能の 2 つの機能で構成される場合があります。 架空のインストールのコア機能は、2 つのコンポーネントで構成される場合があります。 最初のコンポーネントは、アプリケーションのプライマリ実行可能ファイルのコンテナーとして機能し、依存するレジストリ エントリが適切に起動するようにします。 コア機能の 2 番目のコンポーネントには、共有.dllと COM サブシステムが認識するためにレジストリに記録する必要がある COM 登録情報が含まれる場合があります。

Windows インストーラー機能

Windows インストーラーは、多数のカスタマイズと構成機能を備えた複雑なテクノロジです。 Windows インストーラーのすべての機能については、この記事では説明しません。 代わりに、より重要な機能をいくつか簡単に見ていきます。

  • **プログラミング
    **Windows インストーラーは、堅牢な API のセットと、アプリケーションが作成プロセスの一部として、インストールおよびメンテナンス プロセスの一部として、Windows インストーラーと対話できるようにする完全なオートメーション インターフェイスを提供します。
  • カスタマイズ
    インストール パッケージのランタイム動作は、さまざまな方法でカスタマイズできます。 たとえば、コマンド ラインで特定のオプションを設定するためのサポートを使用してインストールを開発したり、インストール時に msi ファイルの内容を実際に変更してインストールの動作を変更する特別な変換ファイルを作成したりできます。 プラットフォーム SDK とほとんどのサードパーティ製ツール ベンダーは、変換ファイルの作成をサポートしています。
  • オンデマンドでインストールする
    Windows インストーラーでは、 広告と呼ばれる概念がサポートされています。これにより、アプリケーションの個々の部分 (またはアプリケーション全体) を、ユーザーが必要な場合にのみインストールできます。 オペレーティング システムとの緊密な統合により、Windows インストーラーは、アプリケーションまたはアプリケーションの特定の機能が必要なときに検出できます。 たとえば、.foo ファイルを編集できるアプリケーションがインストールされている場合、Windows インストーラーは、ユーザーが Windows エクスプローラーで .foo ファイルをダブルクリックしたときに、アプリがインストールされていることを確認し、必要に応じてインストールチェック。
  • 回復性
    Windows インストーラーが必要に応じてアプリケーションまたは機能をインストールする方法と同様に、ユーザーが操作する際にアプリケーションを修復することもできます。 たとえば、ユーザーが [スタート] メニューショートカットをクリックするか、関連付けられているファイルをダブルクリックしてアプリケーションを実行すると、Windows インストーラーは要求をインターセプトし、アプリケーションの適切な要素が正しくインストールされていることを確認できます。 問題が検出された場合は、アプリケーションを実行する前に修復が行われます。
  • トランザクション インストール
    Windows インストーラーの内部機能の多くは、インストール中に重大な障害が発生した場合に、インストールを実行してもシステムに悪影響を与えないことを保証することに専念しています。 Windows インストーラーでは、アプリケーションを適切にインストールするために実行する必要がある内容を正確に示す内部の "スクリプト" を作成することで、これを実現します。 インストール中に問題が発生した場合、スクリプトは基本的に実行されたアクションを元に戻し、システムを元の状態のままにすることができます。
  • ソースの回復性
    インストール後にアプリケーションを修復する Windows インストーラーの機能の重要な側面は、場合によっては、元のインストール ソースのコピーにアクセスする必要があるということです。 たとえば、重要なファイルが見つからないか破損していると Windows インストーラーが判断した場合、そのファイルのクリーンコピーを取得する必要があります。 ソースの回復性は、Windows インストーラーが複数の場所で検索して元のインストールを検索し、他の場所でメディアが見つからない場合にユーザーにメディアの入力を求めるメカニズムです。 ソースの場所には、ローカル ファイル システム、ネットワーク共有、またはインターネット URL を指定できます。 Windows インストーラー 3.0 では、これらの機能も強化されており、管理者はソースの場所をより簡単に管理できます。
  • アップグレードと修正プログラムの適用
    アプリケーションが正常にインストールされた後、一般的な製品ライフサイクルは終了しません。 同様に、修正プログラムや新機能をデプロイするには、ほとんどのアプリケーションを更新または修正プログラムを適用する必要があるのが現実です。 Windows インストーラーでは、より包括的なアプリケーション更新プログラムを配布するための修正プログラムとアップグレードを展開するためのバイト レベルの修正プログラムの作成と配布がサポートされています。 Windows インストーラー 3.0 では、修正プログラムのシーケンス処理と修正プログラムをアンインストールする機能をサポートすることで、修正プログラムの修正プログラムを大幅に改善しました。
  • マネージド環境のサポート
    大規模な企業環境では、多くの場合、ユーザーが不正なアプリケーションをインストールして、そのシステムの整合性を危険にさらすのを防ぐために、システムがロックダウンされます。 Windows インストーラーには、システム管理者がこの種類のロックダウン環境で実行するために、特定の msi ベースのインストールを "祝福" できるようにするいくつかの機能が含まれています。

ClickOnce の概要

ClickOnce は、.NET Framework バージョン 2.0 の一部として提供され、ロサンゼルスの PDC 2004 で初めてデモを行った、まったく新しい展開テクノロジです。 ClickOnce は、セキュリティで保護されたランタイム環境を提供しながら、Web アプリケーション配置のシンプルさをスマート クライアント アプリケーションに提供することに重点を置きます。 ClickOnce を使用してアプリケーションを配置するには、Web サーバー、ファイル共有、またはローカル ファイル システムにアプリケーション ファイルを配置し、アプリケーション マニフェストへのリンクをユーザーに提供するだけで済みます。

Visual Studio 2005 で開発している場合、ClickOnce を使用してアプリケーションを発行するのは、発行ウィザードのおかげで簡単な作業です。 発行ウィザードにアクセスするには、ソリューション エクスプローラーでプロジェクト名を右クリックし、コンテキスト メニューから [発行] を選択します。 または、[プロジェクトのプロパティ] ダイアログ ボックスの [ 発行 ] タブからウィザードにアクセスすることもできます。

図 2. Visual Studio 2005 発行ウィザード

ClickOnce 配置は、配置マニフェストとアプリケーション マニフェストという 2 つの XML マニフェスト ファイルを使用して制御されます。

配置マニフェスト

配置マニフェストは、アプリケーションの配置を記述するために使用されます。 これには、アプリケーション マニフェストの場所、アプリケーション マニフェストで説明されているファイル、クライアントが実行する必要がある最新リリースのバージョンが含まれます。

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1
    assembly.adaptive.xsd" manifestVersion="1.0"
    xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:schemas-
    microsoft-com:asm.v2" xmlns:asmv1="urn:schemas-microsoft-
    com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
    xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity name="My Test App.application" version="1.0.0.20"
    publicKeyToken="7726c4d654f5bf83" language="neutral"
    processorArchitecture="msil" xmlns="urn:schemas-microsoft
    -com:asm.v1" />
<description asmv2:publisher="Xambi Solutions" asmv2:product="My Test
    App" asmv2:supportUrl="http://michael
    -dev2/WindowsApplication1/Support.htm" xmlns="urn:schemas
    -microsoft-com:asm.v1" />
<deployment install="true">
<subscription>
<update>
<expiration maximumAge="3" unit="days" />
</update>
</subscription>
<deploymentProvider
    codebase="http://michael_dev2/WindowsApplication1/My%20Test%20App
    .application" />
</deployment>
<dependency>
<dependentAssembly codebase="My Test App_1.0.0.20\My Test 
    App.exe.manifest" size="4908">
<assemblyIdentity name="My Test App.exe" version="1.0.0.20"
    publicKeyToken="7726c4d654f5bf83" language="neutral" 
    processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft
    -com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<dsig:DigestValue>GANTD3FaR5KJiqnEluecM05wtss=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency> 
<Signature Id="StrongNameSignature" 
    xmlns="http://www.w3.org/2000/09/xmldsig#" />
<!-- Details Omitted for Brevity -->
</asmv1:assembly>

アプリケーション マニフェスト

アプリケーション マニフェストは、アプリケーションが正常に機能するために必要なアプリケーション、アセンブリ、ファイル、リソース、およびアクセス許可を記述するために使用されます。 さらに、アプリケーション マニフェストでは、更新プログラムが配置される場所も指定されます。

<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly 
    manifestVersion="1.0" xsi:schemaLocation="urn:schemas-microsoft
    -com:asm.v1 assembly.adaptive.xsd"
    xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:schemas
    -microsoft-com:asm.v2" xmlns:asmv1="urn:schemas-microsoft
    -com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <asmv1:assemblyIdentity name="My Test App.exe" version="1.0.0.20"
    publicKeyToken="7726c4d654f5bf83" language="neutral"
    processorArchitecture="msil" type="win32" />
<asmv2:configuration configFile="My Test App.exe.config"
    xmlns="urn:schemas-microsoft-com:asm.v1" />
<entryPoint>
<assemblyIdentity name="My Test App" version="1.0.0.0"
    publicKeyToken="7726C4D654F5BF83" language="neutral"
    processorArchitecture="msil" />
<commandLine file="My Test App.exe" parameters="" />
</entryPoint>
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet class="System.Security.PermissionSet" version="1"
    ID="Custom">
<IPermission class="System.Security.Permissions.EnvironmentPermission,
    mscorlib, Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /> <IPermission class="System.Security.Permissions.FileDialogPermission,
    mscorlib, Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" version="1" Access="Open" /> <IPermission
    class="System.Security.Permissions.IsolatedStorageFilePermission,
    mscorlib, Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" version="1"
    Allowed="DomainIsolationByUser" UserQuota="10240" />
<IPermission class="System.Security.Permissions.SecurityPermission,
    mscorlib, Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" version="1" Flags="Execution" /> <IPermission class="System.Security.Permissions.UIPermission, mscorlib,
    Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" version="1"
    Window="SafeTopLevelWindows" Clipboard="OwnClipboard" /> <IPermission class="System.Windows.Forms.WebBrowserPermission, System,
    Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" version="1" Level="Restricted" /> <IPermission class="System.Drawing.Printing.PrintingPermission,
    System.Drawing, Version=2.0.3600.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" version="1" Level="SafePrinting"/> </PermissionSet>
<defaultAssemblyRequest permissionSetReference="Custom" /> </applicationRequestMinimum>
</security>
</trustInfo>
<dependency>
<dependentAssembly codebase="My Test App.exe" size="12288"> <assemblyIdentity name="My Test App" version="1.0.0.0"
    publicKeyToken="7726C4D654F5BF83" language="neutral"
    processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft
    -com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <dsig:DigestValue>xx4Nai4Nr7Bp5R7xtyqO8gAVsSk=</dsig:DigestValue> </hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly preRequisite="true">
<assemblyIdentity name="Microsoft-Windows-CLRCoreComp"
    version="2.0.3600.0" />
</dependentAssembly>
</dependency>
<file name="My Test App.exe.config" size="1222">
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft
    -com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<dsig:DigestValue>BdHEVcmEBWqRZGitWdDZ/vAGGmQ=</dsig:DigestValue> </hash>
</file>
<Signature Id="StrongNameSignature"
    xmlns="http://www.w3.org/2000/09/xmldsig#">
<!-- Details Omitted for Brevity -->
</Signature>
</asmv1:assembly> 

アプリケーション マニフェストと配置マニフェストが作成されたら、必要なアプリケーション ファイルと共に、配置場所にコピーするだけで済みます。 配置マニフェストは、アプリケーション マニフェストと同じ場所に格納する必要はありません。 たとえば、配置マニフェストは物理ディスクに配布できます。アクティブ化すると、配置マニフェストは ClickOnce エンジンにアプリケーション マニフェストの場所を指示します。 これは ClickOnce の重要な機能です。これにより、ユーザーはディスクからバージョンをインストールしてからすぐに更新を必要とするのではなく、最初のインストールから最新バージョンのアプリケーションを入手できます。

ユーザーがアプリケーションを起動すると、ClickOnce は配置マニフェストに含まれる設定に従ってアプリケーションをインストールまたは更新します。 アプリで管理者特権のアクセス許可が必要な場合、ユーザーは必要なアクセス許可を付与するように求められます。

図 3: ユーザーが必要なアクセス許可について照会される

このダイアログの右下隅にある [ 詳細情報 ] リンクをクリックすると、次に示す情報ダイアログが表示されます。

図 4: セキュリティ警告の詳細

最後に、アプリケーションが起動して実行されると、アプリがデプロイされたタイトル バーと、アプリケーション アイコンをオーバーレイする特別なアイコンが表示されます。 このアイコンの上にマウス ポインターを置くと、アプリケーションが実行されているセキュリティ コンテキストを示す特別なメッセージが表示されます。

図 5: セキュリティ環境に関する情報メッセージ

メモ セキュリティで保護された環境で実行される可能性のある .NET アプリケーションを記述する場合は、セキュリティ例外を明示的に処理して、アプリケーションが安定し続け、セキュリティ例外が発生したときに何が起こったかをユーザーが理解できるようにすることが非常に重要です。

主な相違点

Windows インストーラーと ClickOnce の両方の機能を簡単に見てきたので、各テクノロジがまったく異なる目標であったことに注意してください。 この点をさらに詳しく説明するために、次のマトリックスを検討してください。

タスク ClickOnce Windows インストーラー
ファイルのインストール X X
ショートカットの作成 X X
ファイル拡張子の関連付け X X
サービスのインストール   X
GAC にインストールする   X
ODBC の管理   X
COM+ の管理   X
レジストリへの書き込み   X
広告   X
Self-Repair   X
ファイル/フォルダー/レジストリのアクセス許可   X
インストール時のユーザー操作   X
すべてのユーザー用にインストールする   X
インストール/アンインストール時のカスタム アクション   X
インストール条件/システムの尋問   X
自動更新とスケジュール設定 X  
強制更新 X  
セキュリティ サンドボックス X  
必要に応じてアセンブリをダウンロード/インストールする X  
以前のバージョンにロールバックする X  

前述のように、これらの各テクノロジは、まったく異なる目標のセットで設計および開発されました。 どちらももう一方を置き換えることを意図したものではありません。 ClickOnce には非常に魅力的な機能セットが用意されており、そのほとんどは Windows インストーラー テクノロジでは見つかりません。 これらの機能は、高度な構成要件がない.NET Frameworkベースのスマート クライアント アプリケーションを構築する開発者を対象としています。 Windows インストーラーは、本質的に拡張可能で、.NET アプリケーションを含むあらゆる展開の課題に対処できるように設計された、はるかに広範な展開テクノロジです。

選び方

デプロイ テクノロジの選択に関しては、自分を 1 つのオプションのみに制限する必要はありません。 重要なのは、適切なジョブに適したツールを選択することです。 1 つのルールや単純な回答はありませんが、特定のニーズに最適な意思決定を行うために使用できる一般的なガイドラインがいくつかあります。

  • アプリケーションは COM コンポーネントをインストールしますか?
  • アプリケーションで COM-Interop 用のコンポーネントを登録する必要がありますか?
  • アプリケーションはサービスをインストールしますか?
  • アプリケーションは、特定の場所またはグローバル アセンブリ キャッシュ (GAC) にインストールする必要がありますか?
  • アプリケーションには、オペレーティング システムまたはランタイム環境に基づいて条件付きでインストールされるコンポーネントがありますか?
  • アプリケーションでは、インストール時にユーザー入力が必要ですか?
  • アプリケーションでは、Active Directory や COM+ などのシステム レベルのサービスの構成が必要ですか?
  • アプリケーションがインストールされると、ファイルの作成、レジストリへの書き込み、またはアプリケーションの削除時にリソースが残る何らかの方法でシステムに影響を与えますか?

これらの質問のいずれかに 「はい」と答えた場合は、現在、Windows インストーラーがニーズに最適な選択肢です。 ただし、上記の一覧で説明したシナリオに対処する必要がない場合は、ClickOnce が配置ソリューションの優れた候補です。 ClickOnce によって提供される個別の利点を活用する場合は、アプリケーション設計プロセスの早い段階で ClickOnce の機能を理解することが重要です。 ClickOnce を使用して初期バージョンのアプリケーションを展開した後、遅ればせながら Windows インストーラーに移行する必要があることを認識すると、慎重な事前計画によって回避できる困難なアップグレード パスが作成されます。

Windows インストーラーと ClickOnce の両方を使用する

はいそうです! あなたは正しく私を聞いた。 この 2 つのテクノロジの実装の違いに関するケースを構築したので、それらを一緒に使用する方法を伝えることで、あなたの世界を揺さぶるつもりです。

Windows インストーラーは、インストール中にユーザーと対話するための高度な機能を提供します。 多くの場合、これはデプロイ プロセスの重要な手順です。 ターゲット・システムがアプリケーションの最小要件を満たしていることを確認するために、インストール・システムが尋問する機能が重要です。 さらに、ほとんどのアプリケーションは、動作環境と何らかの対話を行う傾向があります。 これには、ログ ファイルのディスクへの書き込み、レジストリへのデータの格納などが含まれます。適切に動作するアプリケーションでは、このアプリケーション固有のデータがシステムから削除されたときにクリーンする機会が必要です。 これらはすべて、ClickOnce パラダイムに欠けている重要な配置の概念です。

これに対し、Windows インストーラーには更新プログラムとパッチ適用のストーリーがありますが、ClickOnce ほど洗練されていて管理が簡単ではありません。

少し考え、計画、工夫を加えて、両方のテクノロジを活用して、両方の世界を最大限に活用したデプロイ モデルを作成できます。

Windows インストーラーのセットアップの設計

ここでの基本的な概念は、Windows インストーラー テクノロジに基づいて外部インストールを作成することです。 この外部インストールは、アプリがインストールされる前にシステムを検査および尋問する責任を負います。 ユーザーと対話し、構成情報の収集と格納、GAC への共有アセンブリのインストールなどを行うことができます。 アンインストール時には、通常はアプリケーションによって残されていたリソースをクリーンアップする責任があります。 たとえば、ファイルのアンインストール、実行時に作成されたログ ファイルの削除、サービスのアンインストール、GAC からのアセンブリの削除などを行うことができます。

ClickOnce アプリケーションをインストールに接続することは、もう一度非常に簡単な作業です。 ClickOnce アプリはインターネットまたはイントラネットの URL を使用してアクティブ化できるため、アプリケーション マニフェストを指すショートカットをターゲット システムに作成するだけです。 これを実現するために、Windows インストーラーを使用して、インストール時にすぐに .url ファイルを作成できます。 .url ファイルは、標準の.ini ファイル形式に準拠する特殊な種類のショートカットです。

[InternetShortcut]

URL=http://www.myserver.com/myapp/v1_0/myapp.application

Windows インストーラーを使用してこの INI ファイルを作成するには、IniFile テーブルに 1 つの行のみを追加する必要があります。

列名 メモ
IniFile URLShortcut1 Primary key (プライマリ キー)
FileName My App.url .url ファイルの名前。 この名前のメイン部分は、ユーザーに表示される内容です。 この場合、ショートカットに "マイ アプリ" と表示されます。
DirProperty MyShortcutFolder インストールで定義されているディレクトリの主キー名。 これにより、ショートカットが作成される場所が識別されます。
セクション InternetShortcut ini ファイルに書き込まれるメイン セクション。
キー URL キーと値のペアのキー部分。
http://www.myserver.com/myapp/v1_0/myapp.application アプリケーション マニフェストへの実際の URL。
アクション 0 値 0 は、値が既に存在する場合は作成または更新する必要があることを示します。
コンポーネント MyComponent ショートカットのインストール/アンインストールを担当するコンポーネントへの参照。

この手法を適切に設計した実装では、インストールがアプリケーションに必要なすべてのタスクを確実に実行できるようにするために、msi ファイルをさらに変更する必要がありますが、各デプロイ テクノロジの最良の部分を活用するときに何が可能かを垣間見ることができることを願っています。

まとめ

機能上の制限によって制限されていないアプリケーションの場合、ClickOnce は優れた配置テクノロジであり、Web ベースのアプリケーションでのみ以前に使用できた貴重な利点と更新モデルを提供します。 より高度な要件を持つアプリケーションの場合、Windows インストーラーは選択した展開テクノロジのままです。 これらの各デプロイ テクノロジは、アプリケーションを確実にインストールするという共通の目標を共有していますが、類似点はそこで終わっています。 ClickOnce の機能は将来的に拡大することを確認できますが、Windows インストーラーがここに留まるかどうかも同様に確認できます。 それまでの間に、創造的な取得し、両方を愛することを学びます!

 

作成者について

Michael Sanford は、Xambi Solutionshttp://www.xambi.com () の社長兼最高ソフトウェア アーキテクトです。 Xambi を設立する前は、Zero G Software によって買収された ActiveInstall Corporation の社長兼 CEO でした。 ActiveInstall は、Windows インストーラー作成ソリューションの知名人を達成しました。 Michael は、Microsoft Certified Solution Developer (MCSD)、Microsoft Certified Systems Engineer (MCSE)、Windows インストーラー MVP です。 Michael のブログは、 で http://msmvps.com/michael読むことができます。