C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■102426 / 1階層)  セットアッププロジェクトにて、ファイル更新条件
□投稿者/ とっちゃん (793回)-(2023/09/27(Wed) 20:31:30)
> ■No102424 (kiku さん) に返信
>>2回目のインストール直後に、
>>設定ファイルの中身をcにすることはできますでしょうか?
>
設定ファイルをbの状態にというのは、どこにある設定ファイルを
いつどのタイミングで誰がどうやって変更したのでしょうか?

インストーラがファイルを更新する条件は以下リファレンスをまずはお読みください。

・ファイルのバージョン管理ルール
https://learn.microsoft.com/ja-jp/windows/win32/msi/file-versioning-rules?WT.mc_id=DT-MVP-32182


> その後、設定ファイルを変更した場合、
> アンインストールしても設定ファイルが残ることがわかりました。
>
その残ってしまう設定ファイルはインストールしたファイルですか?
それとも、インストール後にアプリで作成するファイルですか?

アプリで作成するのであればインストーラが知らないファイルになりますので
インストーラで削除するように設定する必要があります。
(VSIではファイルを削除する設定がないので、別途設定が必要)。

RemoveFile Table に追加すれば対応できますが自分でスクリプトを書くか(wirunsql.vbsを利用)
Orcaなどで、あらかじめ差分データを作っておいてそれをMsiMergeなどを利用して
ビルド後イベントなどで合成することになります。

・RemoveFile テーブル
https://learn.microsoft.com/ja-jp/windows/win32/msi/removefile-table?WT.mc_id=DT-MVP-32182


> なら、アンインストール後に、バッチファイルなどを起動し、
> そのバッチファイルにて、インストール先のフォルダを
> すべて削除してしまえば、やりたいことが実現できるのではないかと思い
> 実験したところうまく行きました。
>
これもありですが、WindowsInstaller的には最後手段ですね。
(どうしても設定レベルでは制御できない特殊な部分で利用する方法)


> 具体的な方法としては、
> セットアッププロジェクトのカスタム動作という機能があり、
> このアンインストール項目に、所定のバッチファイルを指定して
> あげれば、アンインストール成功後に、このバッチファイルが起動します。
>
> これでうまく行ったのですが、
> 新たに問題が発生しました。
>
> 上記削除バッチを動作させるために
> インストール先のフォルダのフルパスが必要になります。
> このパスを取得する方法がないか?という質問になります。
>
カスタム動作で呼び出すプログラムにパラメータを渡すなどが一般的です。
呼び出すバッチファイルを選択してプロパティを表示し Arguments に
インストールパス(「"[TARGETDIR]\"」と「」の内側をセット)すれば
行けると思います。
旨く行ってるかどうかは、バッチファイルの行頭で
ECHO %1
PAUSE
などとやって、確認するとよいでしょう。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←セットアッププロジェクトにて、ファイル更新条件 /kiku →Re[2]: セットアッププロジェクトにて、ファイル更新条件 /kiku
 
上記関連ツリー

セットアッププロジェクトにて、ファイル更新条件 / kiku (23/09/27(Wed) 15:31) #102424
Re[1]: セットアッププロジェクトにて、ファイル更新条件 / kiku (23/09/27(Wed) 17:27) #102425
セットアッププロジェクトにて、ファイル更新条件 / とっちゃん (23/09/27(Wed) 20:31) #102426 ←Now
  └ Re[2]: セットアッププロジェクトにて、ファイル更新条件 / kiku (23/09/28(Thu) 09:07) #102428 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信