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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.88483 の関連記事表示

<< 0 >>
■88483  インストーラMicrosoft SetupProject_2
□投稿者/ ぽんすけ -(2018/09/03(Mon) 12:50:15)

    分類:[インストーラ全般] 

    お世話になっております。

    Visual Studio2017においてC#でSetup projectを使ってインストーラを作成しております。
    またまた問題が出てきましたので、ご相談させていただきます。

    アンインストール時にカスタム動作を入れたいため、System.Configuration.Install.Installer
    クラスを継承したクラスを作成し、アンインストール時に、確認ダイアログを表示しようと
    思いました。

    確認ダイアログで「はい」が選択された場合、アンインストール実行し、
    「いいえ」が選択された場合はロールバックさせたいと思い、以下のような
    コードを入れてみました。


    public override void Uninstall(System.Collections.IDictionary savedState)
    {
    DialogResult result = MessageBox.Show("アンインストールしますか?",
    "確認",
    MessageBoxButtons.YesNo,
    MessageBoxIcon.Exclamation,
    MessageBoxDefaultButton.Button2);

    if (result == DialogResult.Yes)
    {
    base.Uninstall(savedState);
    }
    else if (result == DialogResult.No)
    {
    base.Rollback(savedState);
    }

    System.Windows.Forms.MessageBox.Show("Uninstall");
    }


    ところが「いいえ」選択時には、ロールバックされませんでした。
    よくよく確認しますと、ここに来た時点ではすでにアンインストールが
    終わってしまっているということに気づきました。
    このような確認ダイアログを出したい場合、自作でアンインストール処理
    を作成する以外、方法はありませんでしょうか。
    すみませんが、ご教示ください。



親記事 /過去ログ152より / 関連記事表示
削除チェック/

■88484  Re[1]: インストーラMicrosoft SetupProject_2
□投稿者/ とっちゃん -(2018/09/03(Mon) 13:26:09)
    No88483 (ぽんすけ さん) に返信
    > アンインストール時にカスタム動作を入れたいため、System.Configuration.Install.Installer
    > クラスを継承したクラスを作成し、アンインストール時に、確認ダイアログを表示しようと
    > 思いました。
    >
    > 確認ダイアログで「はい」が選択された場合、アンインストール実行し、
    > 「いいえ」が選択された場合はロールバックさせたいと思い、以下のような
    > コードを入れてみました。
    >

    カスタム動作が呼び出される段階ですでにアンインストール処理が「開始」しています。
    Installerクラスを呼び出す仕組みの都合もあるのですが、このクラスのメソッド(イベントハンドラ)には
    戻り値を渡して、挙動を制御するという仕組みが用意されていません。

    それはともかくとして、実現したいことは「アンインストールしますか?」の表示確認ですか?

    実現できたとして。。。呼び出し方によっては本当のアンインストール前と、アンインストール中の
    2回表示される場合がありますがそれでも問題ないのでしょうか?
    #OSや呼び出し方によっては自分が追加した分しか表示されない

記事No.88483 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88485  Re[2]: インストーラMicrosoft SetupProject_2
□投稿者/ ぽんすけ -(2018/09/03(Mon) 14:12:22)
    No88484 (とっちゃん さん) に返信

    返信ありがとうございます。

    >
    > それはともかくとして、実現したいことは「アンインストールしますか?」の表示確認ですか?

    「アンインストールしますか?」の表示確認を行い、
    「はい」の場合は実行させ、「いいえ」の場合はアンインストールを
    キャンセルさせたいと思っています。

    >
    > 実現できたとして。。。呼び出し方によっては本当のアンインストール前と、アンインストール中の
    > 2回表示される場合がありますがそれでも問題ないのでしょうか?
    > #OSや呼び出し方によっては自分が追加した分しか表示されない
    >
    できれば、1回のみ(自分が追加した分)の表示のほうが良いと
    考えております。
記事No.88483 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88486  Re[3]: インストーラMicrosoft SetupProject_2
□投稿者/ とっちゃん -(2018/09/03(Mon) 15:32:03)
    No88485 (ぽんすけ さん) に返信
    >>それはともかくとして、実現したいことは「アンインストールしますか?」の表示確認ですか?
    >
    > 「アンインストールしますか?」の表示確認を行い、
    > 「はい」の場合は実行させ、「いいえ」の場合はアンインストールを
    > キャンセルさせたいと思っています。
    >
    Installer クラスで実現するのは多分無理だと思います。

    Installerクラスの Uninstall を呼び出さなかった場合も、アンインストールをキャンセルすることはないと思うので多分だめなんじゃないかなぁ?

    と思います。
    もしかしたら、Uninstall で何もしないということで行けるかもしれません。
    多分だめだと思いますけど。。。

    >>
    >>実現できたとして。。。呼び出し方によっては本当のアンインストール前と、アンインストール中の
    >>2回表示される場合がありますがそれでも問題ないのでしょうか?
    >>#OSや呼び出し方によっては自分が追加した分しか表示されない
    > >
    > できれば、1回のみ(自分が追加した分)の表示のほうが良いと
    > 考えております。
    >

    こちらは、かなりの難易度かつ、必ず出てしまうのが1つあります。

    「アプリケーションの追加と削除でアンインストールを押された場合」

    です。

    まず、これをどうするか?(自分の1回のみが実現不可能な条件がせいりつしている)を考えたうえで
    再度検討することをお勧めします。

    そのうえで、これとは別に。。。ということであれば、

    インストール後に
    msiexec /i アプリの.msi
    として、メンテナンスモードから削除を選択した場合
    msiexec /x アプリの.msi
    として、そのままアンインストールを始めた場合
    の2つも動かして検討してみてください。

    実際に自分の目で見て確認した上で、どうするのがいいかを検討するとよいと思います。

    「アンインストールしますか?」というメッセージの表示については。
記事No.88483 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88487  Re[4]: インストーラMicrosoft SetupProject_2
□投稿者/ ぽんすけ -(2018/09/03(Mon) 15:52:24)
    No88486 (とっちゃん さん) に返信

    お忙しいところ、ご教示ありがとうございます。
    頂いた内容をもとに検討してみます。
記事No.88483 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88565  Re[5]: インストーラMicrosoft SetupProject_2
□投稿者/ ぽんすけ -(2018/09/07(Fri) 23:40:03)
    No88487 (ぽんすけ さん) に返信
    > ■No88486 (とっちゃん さん) に返信
    >
    > お忙しいところ、ご教示ありがとうございます。
    > 頂いた内容をもとに検討してみます。

    上記の件につきましては、まだ保留中ですが、別件の質問がございます。
    インストーラ起動時に、インストール先を聞かれて、c:\Program Files\・・・・・以外の
    フォルダも指定できますが、ここで指定したフォルダのパスは
    アプリのほうで参照できますでしょうか。あるいはカスタム動作で参照できますでしょうか。
    すみませんが、ご教示ください。

記事No.88483 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88566  Re[6]: インストーラMicrosoft SetupProject_2
□投稿者/ ぽんすけ -(2018/09/08(Sat) 11:55:58)
    No88565 (ぽんすけ さん) に返信
    > ■No88487 (ぽんすけ さん) に返信
    >>■No88486 (とっちゃん さん) に返信
    >>
    >>お忙しいところ、ご教示ありがとうございます。
    >>頂いた内容をもとに検討してみます。
    >
    > 上記の件につきましては、まだ保留中ですが、別件の質問がございます。
    > インストーラ起動時に、インストール先を聞かれて、c:\Program Files\・・・・・以外の
    > フォルダも指定できますが、ここで指定したフォルダのパスは
    > アプリのほうで参照できますでしょうか。あるいはカスタム動作で参照できますでしょうか。
    > すみませんが、ご教示ください。
    >
    カスタム動作System.Configuration.Install.Installer継承クラスのInstall()で参照する
    ことはできました。これをアプリ側へ受け渡すことは可能なのでしょうか
記事No.88483 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88570  Re[7]: インストーラMicrosoft SetupProject_2
□投稿者/ ぽんすけ -(2018/09/08(Sat) 13:43:26)
    No88566 (ぽんすけ さん) に返信
    > ■No88565 (ぽんすけ さん) に返信
    >>■No88487 (ぽんすけ さん) に返信
    > >>■No88486 (とっちゃん さん) に返信
    > >>
    > >>お忙しいところ、ご教示ありがとうございます。
    > >>頂いた内容をもとに検討してみます。
    >>
    >>上記の件につきましては、まだ保留中ですが、別件の質問がございます。
    >>インストーラ起動時に、インストール先を聞かれて、c:\Program Files\・・・・・以外の
    >>フォルダも指定できますが、ここで指定したフォルダのパスは
    >>アプリのほうで参照できますでしょうか。あるいはカスタム動作で参照できますでしょうか。
    >>すみませんが、ご教示ください。
    >>
    > カスタム動作System.Configuration.Install.Installer継承クラスのInstall()で参照する
    > ことはできました。これをアプリ側へ受け渡すことは可能なのでしょうか
記事No.88483 のレス / END /過去ログ152より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -