2009-05-08 22 views
0

私はWinFormsアプリケーションを完成させたばかりで、その作業は素晴らしいです!今、展開する時間。問題は、セットアップファイルを作成するのではなく、「myApp.exe」などの単一の実行可能ファイルを作成することです。この理由は、CDメディアに再配布され、CDがユーザーのPCに挿入されたときにスタンドアロンのアプリケーションとして自動実行されるためです。WindowsフォームC#.netデプロイメントの問題

ここにはどんな考えがありますか?

第2に、アプリ内からCDに含まれている '.txt'ファイルへの参照を作成するにはどうすればよいですか?私はファイルへのリンクを提供したいが、パス参照を行う方法についてはわからない。

TIA ...私は本当にここに戸惑っています!

答えて

1

@Shalan、再:あなたの答え:

は注意してください!ユーザーとメンテナンスプログラマーが怒ってしまうでしょう!

私はこのエラーを少なくとも数十回見て修正しました。

現在のディレクトリがわかっていますか?例えば、OpenFileDialogとSaveFileDialogはそれを変更することができ、次にあなたの.dotファイルを見つけることができません。

ユーザーが異なる作業ディレクトリでアプリケーションを起動するとどうなりますか?それから、あなたも失敗するでしょう。作業ディレクトリを制御することはできないことに注意してください。ユーザがデフォルトから変更した場合、アプリケーションは失敗します。

アプリケーション実行ファイルのパスを見つける必要がある場合は、Application.StartupPathSystem.IO.Pathを一緒に使用することを検討してください。例:

string dotSubPath = System.IO.Path.Combine("Assets", "MyDocument.dot"); 
string templatePath = System.IO.Path.Combine(Application.StartupPath, dotSubPath); 

これは、作業ディレクトリだけでなく、アプリケーションの起動ディレクトリに基づいたパスを常に取得します。

+0

WOAH!ヘッドアップ、グレッグのおかげで!一番上で述べたように、リリースファイルはCDにコピーされ、EXEはそのCDのルートから直接実行されます。しかし、ユーザーの光学式ドライブのドライブ文字が不明なので、代わりに前述のルートを使用することにしました。アプリ内で使用されているダイアログはありません。動作するように思われます。 "作業ディレクトリ"が意味するものはこのインスタンスです。ありがとう! – Shalan

+0

...このインスタンスでは... – Shalan

+0

b/cが動作するように見えますが、デフォルトのディレクトリは実行可能なディレクトリです。あなたは、ユーザーが常にデフォルトの設定でそれを正確に実行することを保証することはできません。現在の作業ディレクトリを変更する方法はいろいろあります。それを正しい方法で実行するための追加費用はありません。たとえば、このプログラムの今後のバージョンではこれまでどおりダイアログを使用しないことを確認できますか?もちろん違います。 –

1

あなたは別々のファイルの代わりにexeファイル内に埋め込まれたリソースを使用することができます。http://jopinblog.wordpress.com/2007/11/12/embedded-resource-queries-or-how-to-manage-sql-code-in-your-net-projects/

+0

しかし、このインスタンスでは動作しますか...私はMS Office PIAを使用していますので、実際には差し込み印刷を使用してMS Wordの.dotテンプレート文書のいくつかのテンプレートフィールドに書き込んでいます。私はまだこれを埋め込むべきですか? – Shalan

+0

ああ、申し訳ありません...コンパイル時にビルドされるDLLを参照していましたか? – Shalan

+0

いいえ、任意の種類のファイルを埋め込むことができます。しかし、MS Officeの部分についてはわからない。 – JohnOpincar

2

あなたのコードに「.TXT」ファイルを参照する場合、単にアプリはから実行されている場所からの相対パスを使用します。たとえば、.txtファイルが実行可能ファイルと同じディレクトリにある場合は、パス( "filename.txt")を使用せずに参照するか、( "。\ filename.txt")を使用できます。

アプリをインストールしない限り、クライアントにインストールする必要のあるサードパーティのライブラリを使用していないことを確認し、apps/bin /ディレクトリの内容を焼き付けてautorun.iniあなたのexeを起動するファイル。私は、アプリケーションの実行ファイルからの参照パスを必要な場所にも私のために働い何興味のある方、については、

+0

ちょっとdevSolo!それのために余裕!私は通常、 "assets"というフォルダにすべてのファイルを保存するので、txtファイルを "。\ assets \ file.txt"として参照できますか? 私はサードパーティ製のDLLを使用していますが、ソリューションxplorerのReferencesフォルダにあるIveは、 "コピーローカル"プロポーティをtrueに設定しています。一つのことは、過去に私が解決策を構築したときにbinの下に表示されていた2つのフォルダ - 「デバッグ」と「リリース」です。後者はもう存在しません。私はこれを使うべきだと知っていますが、見ることができません。申し訳ありませんが、私はWinformsアプリケーションを構築して以来、しばらくお待ちください!ありがとう! – Shalan

+0

"。\ assets \ file.txt"は実行ファイルが実行されているのと同じパスのassetsフォルダを参照します。そして、あなたのdllが登録を必要とせず、あなたのアプリケーションで単に参照される必要がある限り、彼らは正常に動作します。私はそれがxcopyデプロイメントと呼ばれると信じています。不足しているリリースのバイナリまでは、(ビジュアルスタジオで)Build-> Configuration Manager ...をクリックして、デバッグとリリースを切り替えることができます。その後、アクティブなソリューション構成を変更することができます。 「標準」ツールバーにもドロップダウンリストボックスがあります。 – devSolo

+0

アシスタントのためのThanx devSolo!間違いなくそれをチェックします – Shalan

0

だから例えば、私は私のMS Wordにパスを提供する「Environment.GetCurrentDirectory」

を使用することでした。ドットテンプレートとして:

Object templatePath = Environment.GetCurrentDirectory + "\\Assets\\MyDocument.dot"; 
+0

しないでください。一般的なケースでは間違っています。 –

関連する問題