2009-08-12 14 views
0

クライアントプロジェクト、WindowsServiceプロジェクト、およびServiceConsoleプロジェクトを含むVS2008ソリューションがあります。私が展開すると、ServiceServicesがWindowsServiceのapp.config(つまりSettings.settings)ファイルにアクセスしてそれを設定する必要があるため、WindowsServiceとServiceConsoleを同じフォルダに入れたいと思います。これはClickOnceで可能ですか?もしそうなら、これを達成するためのステップは何ですか?ClickOnceの質問

私の他の質問は、クライアントのセットアップに関するものです。セットアップファイルがファイルサーバー上の場所に公開されると、アプリケーション設定を変更することは可能ですか?もしそうなら、彼らはどこに位置していますか? ServiceConsoleアプリケーションからサーバのIPアドレスを設定して、クライアントをインストールするユーザが気にする必要がないようにしたいと思います。

ありがとうございました。

+0

Lenard、私の更新答えを見てください。 –

答えて

1

ServiceConsoleのプロジェクトにリンクとして既存のアイテムを追加し、そのアイテムに移動してから、「追加」ボタンから「リンクとして追加」を選択します。次に、リンクのビルドプロパティで「コンテンツ」と「常にコピー」を設定する必要があります。最後に、[パブリッシュ]タブの[ファイル]ダイアログに移動し、そこにリストされていることを確認します。表示するには、「すべてのファイルを表示」する必要があります。

あなたの2番目の質問には、新しく書き込まれた設定がユーザーごとであるため、アプリケーションの設定ファイルに書き込まない傾向があります。それらは、ユーザーのプロファイルディレクトリ内の隠しフォルダの1つに埋め込まれます。私はそれが私のために正常に動作理由ではなく、デザイナーの、我々はSystem.Configurationを使用することだと思う、あなたの最後の質問に答えるために

Private Declare Function SHGetSpecialFolderPath Lib "shell32.dll" Alias "SHGetSpecialFolderPathA" _ 
    (ByVal hwndOwner As IntPtr, <Out()> ByVal lpszPath As StringBuilder, ByVal nFolder As Integer, ByVal fCreate As Boolean) As Boolean 
Private Const CSIDL_COMMON_DOCUMENTS As Integer = &H2E 

<snip> 

Dim lpszPath As New StringBuilder(260) 
If SHGetSpecialFolderPath(IntPtr.Zero, lpszPath, CSIDL_COMMON_DOCUMENTS, True) Then 
    _sharedDocsDir = lpszPath.ToString() 
Else 
    Throw New InvalidDataException("Couldn't get working directory root.") 
End If 

:私はこのコードを使用して(CSIDL_COMMON_DOCUMENTSのように)固定された位置を使用してお勧めします生成されたコード。おそらくできることは、設定クラスを3番目のアセンブリ(4番目?)に引き出し、両方のプロジェクトでそのアセンブリを参照するだけです。おそらくapp.configをリンクするよりもうまくいくでしょう。

+0

Bob、Settings.settingsファイルもリンクする必要がありますか?あなたが提案してコンパイルすると、多くのエラーが発生します: 要素 'userSettings'のスキーマ情報が見つかりませんでした。 \t 要素 'Server.Properties.Settings'のスキーマ情報が見つかりませんでした。 \t ServiceConsoleにはSettings.settingファイルがありません。 – Lenard

+0

ボブ、もう一度言いました。 – Lenard