質問

セットアッププロジェクトの実行ファイル"をクリックします。exe,.dll、.js,.vbs"は可能である .bat ファイルをカスタムです。

問題は、これらの *.bat ファイルをインストール時に?

役に立ちましたか?

解決

もに、検索と試行錯誤している。くなった場合の最良の方法です。

このシナリオ:ってい展開を介してVisual Studioのプロジェクトの設定.ほかに自分のファイルを作っていきたい、サブディレクトリは、対象ディレクトリに格納するバッチ(.bat)ファイルです。私はこのようなファイルでインストールの完了です。

こちらはん:

  1. をセットアッププロジェクトを設定して下さいなどのサブディレクトリにょうごバッチファイルだけの場所ではアプリケーションフォルダに直結したいという場合などでサブディレクトリ).
  2. の"ファイルシステム"のビューを右クリックし、[プロジェクトソリューションエクスプローラ->ビュー>ファイルシステム)が追加されたバッチファイルを実行したい cmd.exe(C:\Windows\System32\cmd.exe)
  3. の"カスタムアクションの"ビューを右クリックし、[プロジェクトソリューションエクスプローラ->ビュー>カスタムアクション)
  4. を右クリックして"コミット"を選択"追加カスタムアクション"
  5. ナビゲートを選択しcmd.exe.
  6. の性質パネルの新規作成されたカスタムです。
  7. 削除/コミットから引数の物件です。
  8. 入力: /c "[TARGETDIR]subdirectoryname\batchfile.bat" の引数が有subdirectorynameには特に注意する必要があの名前のサブディレクトリの場合は、バッチファイルのサブディレクトリのようになった...行わなかった場合、この値は /c "[TARGETDIR]batchfile.bat" やbatchfile.batのファイルのバッチファイルです。

それだけです。バッチファイルにすることに一度実行され、残りのインストールプロセスが完了します。

この例で説明:

私のバッチファイル: blah.バット
私のサブディレクトリ: mydir

の値を引数のために私のカスタム行動ターゲティングcmd.exe そして

/c "[TARGETDIR]mydir\blah.bat"

こう!

他のヒント

  1. チェック第条は推奨されていません)もあVB.NET この制度の対象となるC#です。最も重要なのは(翻訳C#)新しいクラス図書館、新しいインストーラのクラスは以下の内容:に記載された記事できるし新しいカスタムアクションへの参照をおして、作成した。

    override void Commit(IDictionary savedState)
    {
         base.Commit(savedState);
         System.Diagnostics.Process.Start("myApp.bat","your bat arguments");
    }
    
  2. 現在このバッチファイルをインストーラープロジェクト.をセットアッププロジェクトを設定して下さいなどのサブディレクトリにょうごバッチファイルだけの場所ではアプリケーションフォルダに直結したいという場合などでサブディレクトリ).

  3. の"ファイルシステム"のビューを右クリックし、[プロジェクトソリューションエクスプローラ->ビュー>ファイルシステム)が追加されたバッチしたいファイルを実行することを示しています。

  4. 構築インストーラのプロジェクト.

同じ結果に到達するためのもう一つの方法は、対応する.batファイルを実行するカスタムアクションでファイル.vbsを置いています。 次のコードは、私がセットアップアプリケーションフォルダに入れて「RunRegisterComponents.vbs」です。もちろん、私は、Visual Studioのプロパティウィンドウでパラメータをの.vbsとして[TARGETDIR]入れます。

dim WshShell
Set WshShell = CreateObject("WScript.Shell")

' Read the "CustomActionData" property holding the install directory.
dim programDir
programDir=  property("CustomActionData")

' Make the batch full file name and parameter
commandString = chr(34) & programDir & "RegisterComponents.bat" & chr(34) & " " & chr(34) &
programDir& chr(34)

' Set the current directory
WshShell.CurrentDirectory = programDir

' Run batch.
ret = WshShell.Run (commandString, 0, 0)
私は私のカスタムアクションを設定すると、

これは、次のとおりです。

ここに画像の説明を入力します

私は、これはあなたを助けることができると思います!

インストール・プロセス中に相対パスを持っているバッチファイルを実行しようとしている場合は、

、それは確かに失敗します。バッチファイルは、アカウントにファイルがインストールされていたところ、インストーラが起動して、とされていないディレクトリを取るためです。一時ディレクトリにコピーするバッチファイルというインストーラビルダーを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top