InstallShield Expressを使用してセットアッププロジェクトを作成しています。
「システムの変更」の前に、アンインストールのカスタムアクションを追加しようとしています。
カスタムアクションは、次のようにウィンドウを開くJavaScriptです。
window.open("https://www.example.com/", "_blank");
しかし、プログラムをアンインストールしようとすると、「Microsoft JScriptランタイムエラー、 'ウィンドウ'が定義されていません。
どうして?
更新:
最後に、問題を解決するために、スクリプトの代わりにMSI DLL=を使用することを選択しました。この質問をどうすればいいですか?ありがとう。
WindowsオブジェクトはNodeJSに存在しません。ただし、後で使用するためにグローバル変数を宣言するだけの場合は、次のようにグローバルオブジェクトにopenメソッドを追加できます。
glboal.open = function whatever(url, param2){
// does the stuff you want
};
そして、あなたはこのようにそれを使うことができます:
conosle.log(global.open('https://www.example.com/','_blank'));
しかし、私はまだこのためのグローバル変数を作成することをお勧めしません。ファイルに関数を作成し、必要なときにインポートします。グローバル変数は結合を引き起こし、コードを読みにくくする可能性があります。また、この変数はアプリケーションの存続期間全体にわたって存在するため、さらに変数を作成する場合は、これは適切でない可能性があります。
グローバル変数が悪い理由の詳細を読みたい場合: https://wiki.c2.com/?GlobalVariablesAreBad