2017-10-02 19 views
0

私のアプリケーション用のVisual Studioでセットアッププロイクトを作成していますが、小さな問題があります。sfxパスが正常に動作しません

大量のファイルをいくつかのフォルダにコピーしたい(私のドキュメント - >テスト)。そこで私は、WinRARで.exeファイルを解凍してサイレントモードにしました。そのファイルをダブルクリックすると、自動的に "FILES"というフォルダが作成された同じフォルダに作成され、そのフォルダのすべてが自己解凍されます。

"D:\ Documents \ TEST"にあるfiles.exeファイルをダブルクリックすると、すべてのファイルが "D:\ Documents \ TEST \ FILES"に抽出されます。 - "User's Personal Data Folder"フォルダをファイルシステムに追加し、そのフォルダ内に "TEST"フォルダを作成し、そこにfiles.exeを追加しました。 コミットセクションにカスタムアクションを作成して、そのfiles.exeファイルを実行しました。

しかし、アプリケーションをインストールすると、「D:\ Documents \ TEST」というフォルダが正しく作成され、そこに.exeファイルがコピーされますが、何らかの理由でC:\フォルダに「FILES」フォルダが作成されます。 Windows \ SysWOW64にコピーし、そこにあるファイルを "C:\ Windows \ SysWOW64 \ FILES"に抽出します。

どうすればそれを防ぐことができますか?

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

答えて

0

MSIベースのインストールからカスタムアクションとして何かを実行することは、対話ユーザーの環境から同じコードを実行することと同じではありません。カスタムアクションを実行するときの作業ディレクトリは、通常、コードを実行するWindowsインストーラサービスから来ます。実行ディレクトリが自動的に開始される場所と同じように作業ディレクトリを作成する魔法はありません。つまり、どのコードでも、ファイルの場所の正確なパスを指定し、作業ディレクトリに依存しないようにする必要があります。つまり、プログラムのコードは、プロセスの作業ディレクトリ(32ビットWindowsシステムの場所)に作成されている "FILES"ディレクトリを作成するようです。

あなたがコードを書いたかどうかわかりません。あなたのコメントが環境変数を参照する理由は明確ではありません。ただし、.NETプログラマはすべてEnvironment.SpecialFolder.MyDocumentsを使用します。あなたは、このリストからPersonalFolderプロパティを求める場所のWindowsインストーラを依頼する場合:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx#system_folder_properties

とあなたの質問では、ユーザーの個人データフォルダある「マイドキュメント」フォルダにインストールしていると言いますセットアッププロジェクト(ファイルシステムビュー)のリストから選択します。そのため、セットアッププロジェクトのそのフォルダにインストールする必要があります。コードが何をしているのか、それをカスタムアクションとしてどのように呼び出すのかをもっと明示すれば、どんな答えもより徹底することができます。

+0

ご返信ありがとうございます。しかし、私が知る限り、 "my documents"フォルダの環境変数はありません。そのため、sfxファイルのフォルダの正確な場所を取得する方法がわかりません。何か案は? –

関連する問題