- PR -

セットアッププロジェクトのカスタム動作について

1
投稿者投稿内容
taa
常連さん
会議室デビュー日: 2005/08/29
投稿数: 44
投稿日時: 2006-08-29 04:00
こんばんは。
今、セットアッププロジェクトの「ユーザインターフェース」に
「テキストボックス(A)」の画面を追加し、インストール時のカスタムアクションより、
「テキストボックス(A)」の画面にて入力した値をメッセージボックス表示しようとしています。
しかし、「テキストボックス(A)」の画面より"C:\"など末尾に"\"文字(1つ)を入力すると以下のエラーが
出力してしまいます。(末尾が"\"文字(1つ)以外だと正常にいきます。)

【エラーの内容】
インストールを初期化中に例外が発生しました。
System.IO.FileNotFoundException: ファイルまたはアセンブリ名、Project1.exe、または
その依存関係の1つが見つかりませんでした。

MSDN(http://msdn2.microsoft.com/ja-JP/library/2w2fhwzz.aspx)には
「[TARGETDIR] のようにディレクトリを返す Windows インストーラのプロパティの場合は、
角かっこに加えて、全体を引用符で囲み、最後の角かっこの後に円記号 (\) を付ける必要があります」
と記載してあるので、CustomActionDataプロパティの仕様上、"\"はエスケープした状態でないと
Installerクラスで取得することができないと思うのですが、「ユーザインターフェース」の
「テキストボックス(A)」の画面は何でも入力できてしまうため、エラーを回避することが
できません。

どなたか回避方法をご存知の方がいらっしゃいましたら教えてください。


【カスタム動作プロパティの設定】
CustomActionData : /dir="[DICTIONARY]"

【インストーラークラスのソース】
Imports System.ComponentModel
Imports System.Configuration.Install

<RunInstaller(True)> Public Class Installer1
Inherits System.Configuration.Install.Installer

Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
Dim strDir As String = Me.Context.Parameters("DIRECTORY")
⇒★ここで[CustomActionData]を参照するとExceptionが発生する。
    Msgbox(strDir)
End Sub
End Class

<環境>
VS2003、VB.NET
1

スキルアップ/キャリアアップ(JOB@IT)